@etherisc/gif-next 0.0.2-a638477-247 → 0.0.2-a67250d-285
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 +4 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- 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/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +38 -97
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -75
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +129 -174
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +41 -57
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +49 -62
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1558 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1318 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1664 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2125 -0
- 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/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +54 -54
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +244 -68
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +16 -16
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +9 -9
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +220 -102
- 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 +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/module/IAccess.sol/IAccess.dbg.json +1 -1
- 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 +26 -85
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- 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 +0 -37
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -75
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +8 -83
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +88 -148
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +39 -59
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +12 -32
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +5 -42
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +70 -85
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +5 -80
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +108 -179
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +20 -48
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +19 -38
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +8 -20
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +3 -78
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +194 -72
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +41 -37
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +120 -140
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -37
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +184 -268
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +32 -48
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +107 -152
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +40 -60
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +3 -78
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{ProductService.sol/ProductService.json → RiskService.sol/RiskService.json} +4 -17
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/{ProductServiceManager.sol/ProductServiceManager.json → RiskServiceManager.sol/RiskServiceManager.json} +12 -12
- 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 +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.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 +15 -15
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +28 -28
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
- 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 +2 -2
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +72 -88
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +37 -45
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -37
- 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/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- 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 +0 -75
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- 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 +2 -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 +2 -2
- 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/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +73 -103
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +24 -20
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +22 -22
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +12 -12
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +84 -84
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -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/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/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +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 +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 +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- 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/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/Authorization.sol +0 -1
- package/contracts/distribution/DistributionService.sol +23 -23
- package/contracts/distribution/IDistributionService.sol +9 -5
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/IInstance.sol +7 -30
- package/contracts/instance/Instance.sol +8 -33
- package/contracts/instance/InstanceAdmin.sol +23 -4
- package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
- package/contracts/instance/InstanceReader.sol +32 -7
- package/contracts/instance/InstanceService.sol +57 -33
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IComponents.sol +1 -2
- package/contracts/instance/module/IPolicy.sol +22 -22
- package/contracts/oracle/Oracle.sol +1 -0
- package/contracts/oracle/OracleService.sol +1 -0
- package/contracts/pool/BasicPool.sol +4 -4
- package/contracts/pool/BasicPoolAuthorization.sol +2 -2
- package/contracts/pool/BundleService.sol +40 -39
- package/contracts/pool/IBundleService.sol +6 -5
- package/contracts/pool/IPoolService.sol +33 -22
- package/contracts/pool/Pool.sol +18 -20
- package/contracts/pool/PoolService.sol +68 -84
- package/contracts/product/ApplicationService.sol +39 -21
- package/contracts/product/BasicProduct.sol +1 -0
- package/contracts/product/ClaimService.sol +114 -44
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +28 -5
- package/contracts/product/IPolicyService.sol +21 -32
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +0 -1
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +228 -184
- package/contracts/product/PricingService.sol +42 -41
- package/contracts/product/Product.sol +49 -35
- package/contracts/product/{ProductService.sol → RiskService.sol} +4 -6
- package/contracts/product/{ProductServiceManager.sol → RiskServiceManager.sol} +8 -8
- package/contracts/registry/IRegistry.sol +1 -1
- package/contracts/registry/Registry.sol +1 -1
- package/contracts/registry/RegistryAdmin.sol +10 -1
- package/contracts/registry/ReleaseRegistry.sol +1 -1
- package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
- package/contracts/shared/Component.sol +12 -24
- package/contracts/shared/ComponentService.sol +14 -24
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
- package/contracts/shared/InstanceLinkedComponent.sol +1 -1
- package/contracts/shared/NftOwnable.sol +1 -1
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +8 -26
- package/contracts/staking/StakingService.sol +8 -12
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/ObjectType.sol +15 -11
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/StateId.sol +1 -0
- package/package.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
@@ -17,7 +17,7 @@ import {UFixed} from "../type/UFixed.sol";
|
|
17
17
|
|
18
18
|
interface IPoolService is IService {
|
19
19
|
|
20
|
-
event
|
20
|
+
event LogPoolServiceMaxBalanceAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
|
21
21
|
event LogPoolServiceBundleOwnerRoleSet(NftId poolNftId, RoleId bundleOwnerRole);
|
22
22
|
|
23
23
|
event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
|
@@ -29,16 +29,14 @@ interface IPoolService is IService {
|
|
29
29
|
error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
|
30
30
|
error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
|
31
31
|
error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
|
32
|
-
error
|
33
|
-
|
34
|
-
error ErrorPoolServiceAmountIsZero();
|
35
|
-
|
32
|
+
error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
|
33
|
+
|
36
34
|
/// @dev defines the required role for bundle owners for the calling pool
|
37
35
|
/// default implementation returns PUBLIC ROLE
|
38
36
|
function setBundleOwnerRole(RoleId bundleOwnerRole) external;
|
39
37
|
|
40
|
-
/// @dev sets the max
|
41
|
-
function
|
38
|
+
/// @dev sets the max balance amount for the calling pool
|
39
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount) external;
|
42
40
|
|
43
41
|
/// @dev locks required collateral to cover the specified application (and turn it into a policy)
|
44
42
|
/// - retention level == 1: the full collateral amount will be locked by the specified bundle
|
@@ -82,19 +80,28 @@ interface IPoolService is IService {
|
|
82
80
|
) external;
|
83
81
|
|
84
82
|
|
85
|
-
/// @dev create a new bundle
|
86
|
-
/// staking fees will be deducted by the pool service from the staking amount
|
83
|
+
/// @dev create a new empty bundle with the provided parameters
|
87
84
|
/// may only be called by registered and unlocked pool components.
|
88
|
-
/// The pool balance is equal to the pool fees plus the capital of all bundles.
|
89
85
|
function createBundle(
|
90
86
|
address owner, // initial bundle owner
|
91
87
|
Fee memory fee, // fees deducted from premium that go to bundle owner
|
92
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
93
88
|
Seconds lifetime, // initial duration for which new policies are covered
|
94
89
|
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
95
90
|
)
|
96
91
|
external
|
97
|
-
returns(NftId bundleNftId
|
92
|
+
returns(NftId bundleNftId); // the nft id of the newly created bundle
|
93
|
+
|
94
|
+
|
95
|
+
/// @dev increase stakes for bundle
|
96
|
+
/// staking fees will be deducted by the pool service from the staking amount
|
97
|
+
/// may only be called by registered and unlocked pool components
|
98
|
+
function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
|
99
|
+
|
100
|
+
|
101
|
+
/// @dev decrease stakes for bundle
|
102
|
+
/// performance fees will be deducted by the pool service from the staking amount
|
103
|
+
/// may only be called by registered and unlocked pool components
|
104
|
+
function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
|
98
105
|
|
99
106
|
|
100
107
|
/// @dev closes the specified bundle
|
@@ -105,18 +112,22 @@ interface IPoolService is IService {
|
|
105
112
|
function closeBundle(NftId bundleNftId) external;
|
106
113
|
|
107
114
|
|
108
|
-
/// @dev
|
109
|
-
function
|
115
|
+
/// @dev Fund the specified pool wallet with the provided amount.
|
116
|
+
/// This function will collect the amount from the sender address and transfers it to the pool wallet.
|
117
|
+
/// The function will not update balance amounts managed by the framework.
|
118
|
+
/// Only available for externally managed pools.
|
119
|
+
function fundPoolWallet(NftId poolNftId, Amount amount) external;
|
110
120
|
|
111
|
-
/// @dev increase stakes for bundle
|
112
|
-
/// staking fees will be deducted by the pool service from the staking amount
|
113
|
-
/// may only be called by registered and unlocked pool components
|
114
|
-
function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
|
115
121
|
|
116
|
-
/// @dev
|
117
|
-
///
|
118
|
-
///
|
119
|
-
|
122
|
+
/// @dev Defund the specified pool wallet with the provided amount.
|
123
|
+
/// This function will transfer the amount from the pool wallet to the sender address.
|
124
|
+
/// The function will not update balance amounts managed by the framework.
|
125
|
+
/// Only available for externally managed pools.
|
126
|
+
function defundPoolWallet(NftId poolNftId, Amount amount) external;
|
127
|
+
|
128
|
+
|
129
|
+
/// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
|
130
|
+
function processSale(NftId bundleNftId, IPolicy.PremiumInfo memory premium) external;
|
120
131
|
|
121
132
|
|
122
133
|
/// @dev calulate required collateral for the provided parameters
|
package/contracts/pool/Pool.sol
CHANGED
@@ -113,15 +113,15 @@ abstract contract Pool is
|
|
113
113
|
view
|
114
114
|
returns (IComponents.PoolInfo memory poolInfo)
|
115
115
|
{
|
116
|
-
return IComponents.PoolInfo(
|
117
|
-
|
118
|
-
|
119
|
-
isNftInterceptor(),
|
120
|
-
false,
|
121
|
-
false,
|
122
|
-
UFixedLib.toUFixed(1),
|
123
|
-
UFixedLib.toUFixed(1)
|
124
|
-
);
|
116
|
+
return IComponents.PoolInfo({
|
117
|
+
maxBalanceAmount: AmountLib.max(),
|
118
|
+
bundleOwnerRole: PUBLIC_ROLE(),
|
119
|
+
isInterceptingBundleTransfers: isNftInterceptor(),
|
120
|
+
isExternallyManaged: false,
|
121
|
+
isVerifyingApplications: false,
|
122
|
+
collateralizationLevel: UFixedLib.toUFixed(1),
|
123
|
+
retentionLevel: UFixedLib.toUFixed(1)
|
124
|
+
});
|
125
125
|
}
|
126
126
|
|
127
127
|
// Internals
|
@@ -169,9 +169,9 @@ abstract contract Pool is
|
|
169
169
|
)
|
170
170
|
internal
|
171
171
|
virtual
|
172
|
-
returns(Amount
|
172
|
+
returns(Amount)
|
173
173
|
{
|
174
|
-
_getPoolStorage()._poolService.stake(bundleNftId, amount);
|
174
|
+
return _getPoolStorage()._poolService.stake(bundleNftId, amount);
|
175
175
|
}
|
176
176
|
|
177
177
|
|
@@ -229,7 +229,7 @@ abstract contract Pool is
|
|
229
229
|
/// To close a bundle all all linked policies MUST be in closed state as well.
|
230
230
|
/// Closing a bundle finalizes the bundle bookkeeping including overall profit calculation.
|
231
231
|
/// Once a bundle is closed this action cannot be reversed.
|
232
|
-
function
|
232
|
+
function _closeBundle(NftId bundleNftId)
|
233
233
|
internal
|
234
234
|
virtual
|
235
235
|
{
|
@@ -251,13 +251,13 @@ abstract contract Pool is
|
|
251
251
|
}
|
252
252
|
|
253
253
|
|
254
|
-
/// @dev Sets the maximum
|
254
|
+
/// @dev Sets the maximum balance amound held by this pool.
|
255
255
|
/// Function may only be called by pool owner.
|
256
|
-
function
|
256
|
+
function _setMaxBalanceAmount(Amount maxBalanceAmount)
|
257
257
|
internal
|
258
258
|
virtual
|
259
259
|
{
|
260
|
-
_getPoolStorage()._poolService.
|
260
|
+
_getPoolStorage()._poolService.setMaxBalanceAmount(maxBalanceAmount);
|
261
261
|
}
|
262
262
|
|
263
263
|
/// @dev Sets the required role to create/own bundles.
|
@@ -287,21 +287,19 @@ abstract contract Pool is
|
|
287
287
|
_getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
|
288
288
|
}
|
289
289
|
|
290
|
-
/// @dev Creates a new bundle using the provided parameter values.
|
290
|
+
/// @dev Creates a new empty bundle using the provided parameter values.
|
291
291
|
function _createBundle(
|
292
292
|
address bundleOwner,
|
293
293
|
Fee memory fee,
|
294
|
-
Amount amount,
|
295
294
|
Seconds lifetime,
|
296
295
|
bytes memory filter
|
297
296
|
)
|
298
297
|
internal
|
299
|
-
returns(NftId bundleNftId
|
298
|
+
returns(NftId bundleNftId)
|
300
299
|
{
|
301
|
-
|
300
|
+
bundleNftId = _getPoolStorage()._poolService.createBundle(
|
302
301
|
bundleOwner,
|
303
302
|
fee,
|
304
|
-
amount,
|
305
303
|
lifetime,
|
306
304
|
filter);
|
307
305
|
|
@@ -1,8 +1,6 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
|
6
4
|
import {IBundle} from "../instance/module/IBundle.sol";
|
7
5
|
import {IBundleService} from "./IBundleService.sol";
|
8
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
@@ -17,13 +15,12 @@ import {IStaking} from "../staking/IStaking.sol";
|
|
17
15
|
|
18
16
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
19
17
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
20
|
-
import {NftId
|
18
|
+
import {NftId} from "../type/NftId.sol";
|
21
19
|
import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
|
22
20
|
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
23
21
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
24
22
|
import {KEEP_STATE} from "../type/StateId.sol";
|
25
23
|
import {Seconds} from "../type/Seconds.sol";
|
26
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
27
24
|
import {UFixed} from "../type/UFixed.sol";
|
28
25
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
29
26
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
@@ -68,24 +65,20 @@ contract PoolService is
|
|
68
65
|
registerInterface(type(IPoolService).interfaceId);
|
69
66
|
}
|
70
67
|
|
71
|
-
|
72
|
-
function
|
68
|
+
/// @inheritdoc IPoolService
|
69
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
73
70
|
external
|
74
71
|
virtual
|
75
72
|
{
|
76
|
-
/*
|
77
73
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
78
74
|
InstanceReader instanceReader = instance.getInstanceReader();
|
75
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
79
76
|
|
80
|
-
|
81
|
-
|
82
|
-
Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
|
83
|
-
|
84
|
-
poolInfo.maxCapitalAmount = maxCapitalAmount;
|
77
|
+
Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
|
78
|
+
poolInfo.maxBalanceAmount = maxBalanceAmount;
|
85
79
|
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
86
80
|
|
87
|
-
emit
|
88
|
-
*/
|
81
|
+
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
89
82
|
}
|
90
83
|
|
91
84
|
function setBundleOwnerRole(RoleId bundleOwnerRole)
|
@@ -113,46 +106,25 @@ contract PoolService is
|
|
113
106
|
function createBundle(
|
114
107
|
address bundleOwner, // initial bundle owner
|
115
108
|
Fee memory fee, // fees deducted from premium that go to bundle owner
|
116
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
117
109
|
Seconds lifetime, // initial duration for which new policies are covered
|
118
110
|
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
119
111
|
)
|
120
112
|
external
|
121
113
|
virtual
|
122
|
-
returns(NftId bundleNftId
|
114
|
+
returns(NftId bundleNftId)
|
123
115
|
{
|
124
116
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
125
|
-
|
126
|
-
Amount stakingFeeAmount;
|
127
|
-
(stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
|
128
|
-
_getStakingFee(instance.getInstanceReader(), poolNftId),
|
129
|
-
stakingAmount);
|
130
|
-
|
131
|
-
// TODO: staking amount must be be > maxCapitalAmount
|
132
117
|
|
118
|
+
// create the empty bundle
|
133
119
|
bundleNftId = _bundleService.create(
|
134
120
|
instance,
|
135
121
|
poolNftId,
|
136
122
|
bundleOwner,
|
137
123
|
fee,
|
138
|
-
|
124
|
+
AmountLib.zero(),
|
139
125
|
lifetime,
|
140
126
|
filter);
|
141
127
|
|
142
|
-
// pool book keeping
|
143
|
-
_componentService.increasePoolBalance(
|
144
|
-
instance.getInstanceStore(),
|
145
|
-
poolNftId,
|
146
|
-
netStakedAmount,
|
147
|
-
stakingFeeAmount);
|
148
|
-
|
149
|
-
// pool bookkeeping and collect tokens from bundle owner
|
150
|
-
_collectStakingAmount(
|
151
|
-
instance.getInstanceReader(),
|
152
|
-
poolNftId,
|
153
|
-
bundleOwner,
|
154
|
-
stakingAmount);
|
155
|
-
|
156
128
|
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
157
129
|
}
|
158
130
|
|
@@ -172,14 +144,26 @@ contract PoolService is
|
|
172
144
|
{
|
173
145
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
174
146
|
|
175
|
-
// TODO
|
147
|
+
// TODO get performance fee for pool (#477)
|
176
148
|
|
177
149
|
// releasing collateral in bundle
|
178
|
-
_bundleService.close(instance, bundleNftId);
|
179
|
-
|
180
|
-
// TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
|
150
|
+
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
181
151
|
|
152
|
+
_componentService.decreasePoolBalance(
|
153
|
+
instance.getInstanceStore(),
|
154
|
+
poolNftId,
|
155
|
+
unstakedAmount + feeAmount,
|
156
|
+
AmountLib.zero());
|
157
|
+
|
182
158
|
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
159
|
+
|
160
|
+
if ((unstakedAmount + feeAmount).gtz()){
|
161
|
+
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
162
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
163
|
+
poolComponentInfo.wallet,
|
164
|
+
getRegistry().ownerOf(bundleNftId),
|
165
|
+
unstakedAmount + feeAmount);
|
166
|
+
}
|
183
167
|
}
|
184
168
|
|
185
169
|
/// @inheritdoc IPoolService
|
@@ -198,15 +182,18 @@ contract PoolService is
|
|
198
182
|
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
199
183
|
}
|
200
184
|
|
201
|
-
|
202
|
-
|
203
|
-
|
185
|
+
{
|
186
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
187
|
+
if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
|
188
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
|
189
|
+
}
|
204
190
|
}
|
205
191
|
|
206
192
|
// calculate fees
|
193
|
+
Amount feeAmount;
|
207
194
|
(
|
208
|
-
|
209
|
-
|
195
|
+
feeAmount,
|
196
|
+
netAmount
|
210
197
|
) = FeeLib.calculateFee(
|
211
198
|
_getStakingFee(instanceReader, poolNftId),
|
212
199
|
amount);
|
@@ -223,6 +210,8 @@ contract PoolService is
|
|
223
210
|
// collect tokens from bundle owner
|
224
211
|
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
225
212
|
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
213
|
+
|
214
|
+
// TODO only collect staking token when pool is not externally managed
|
226
215
|
_collectStakingAmount(
|
227
216
|
instanceReader,
|
228
217
|
poolNftId,
|
@@ -246,10 +235,6 @@ contract PoolService is
|
|
246
235
|
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
247
236
|
}
|
248
237
|
|
249
|
-
if (amount.eqz()) {
|
250
|
-
revert ErrorPoolServiceAmountIsZero();
|
251
|
-
}
|
252
|
-
|
253
238
|
// call bundle service for bookkeeping and additional checks
|
254
239
|
Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
|
255
240
|
|
@@ -267,27 +252,39 @@ contract PoolService is
|
|
267
252
|
|
268
253
|
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
269
254
|
address poolWallet = poolComponentInfo.wallet;
|
270
|
-
|
271
|
-
// check allowance
|
272
|
-
{
|
273
|
-
IERC20Metadata token = IERC20Metadata(poolComponentInfo.token);
|
274
|
-
uint256 tokenAllowance = token.allowance(poolWallet, address(poolComponentInfo.tokenHandler));
|
275
|
-
if (tokenAllowance < unstakedAmount.toInt()) {
|
276
|
-
revert ErrorPoolServiceWalletAllowanceTooSmall(poolWallet, address(poolComponentInfo.tokenHandler), tokenAllowance, amount.toInt());
|
277
|
-
}
|
278
|
-
}
|
279
|
-
|
280
255
|
// transfer amount to bundle owner
|
281
256
|
address owner = getRegistry().ownerOf(bundleNftId);
|
282
257
|
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
|
283
|
-
|
284
|
-
|
258
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
259
|
+
poolWallet,
|
260
|
+
owner,
|
261
|
+
unstakedAmount);
|
285
262
|
return unstakedAmount;
|
286
263
|
}
|
287
264
|
|
265
|
+
|
266
|
+
function fundPoolWallet(NftId poolNftId, Amount amount)
|
267
|
+
external
|
268
|
+
virtual
|
269
|
+
restricted()
|
270
|
+
{
|
271
|
+
// TODO check that poolNftId is externally managed
|
272
|
+
// TODO implement
|
273
|
+
}
|
274
|
+
|
275
|
+
|
276
|
+
function defundPoolWallet(NftId poolNftId, Amount amount)
|
277
|
+
external
|
278
|
+
virtual
|
279
|
+
restricted()
|
280
|
+
{
|
281
|
+
// TODO check that poolNftId is externally managed
|
282
|
+
// TODO implement
|
283
|
+
}
|
284
|
+
|
288
285
|
function processSale(
|
289
286
|
NftId bundleNftId,
|
290
|
-
IPolicy.
|
287
|
+
IPolicy.PremiumInfo memory premium
|
291
288
|
)
|
292
289
|
external
|
293
290
|
virtual
|
@@ -299,9 +296,9 @@ contract PoolService is
|
|
299
296
|
IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
|
300
297
|
IInstance instance = IInstance(instanceObjectInfo.objectAddress);
|
301
298
|
|
302
|
-
Amount poolFeeAmount =
|
303
|
-
Amount bundleFeeAmount =
|
304
|
-
Amount bundleNetAmount =
|
299
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
300
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
301
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
305
302
|
|
306
303
|
InstanceStore instanceStore = instance.getInstanceStore();
|
307
304
|
_componentService.increasePoolBalance(
|
@@ -487,7 +484,6 @@ contract PoolService is
|
|
487
484
|
}
|
488
485
|
|
489
486
|
|
490
|
-
// TODO create (I)TreasuryService that deals with all gif related token transfers
|
491
487
|
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
492
488
|
function _collectStakingAmount(
|
493
489
|
InstanceReader instanceReader,
|
@@ -500,23 +496,11 @@ contract PoolService is
|
|
500
496
|
|
501
497
|
// collecting investor token
|
502
498
|
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
503
|
-
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
504
499
|
address poolWallet = componentInfo.wallet;
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
revert ErrorPoolServiceWalletAllowanceTooSmall(bundleOwner, address(tokenHandler), allowance, amount.toInt());
|
510
|
-
}
|
511
|
-
|
512
|
-
// TODO: centralize token handling (issue #471)
|
513
|
-
tokenHandler.transfer(
|
514
|
-
bundleOwner,
|
515
|
-
poolWallet,
|
516
|
-
amount);
|
517
|
-
} else {
|
518
|
-
revert ErrorPoolServiceAmountIsZero();
|
519
|
-
}
|
500
|
+
componentInfo.tokenHandler.collectTokens(
|
501
|
+
bundleOwner,
|
502
|
+
poolWallet,
|
503
|
+
amount);
|
520
504
|
}
|
521
505
|
|
522
506
|
function _getDomain() internal pure override returns(ObjectType) {
|
@@ -111,8 +111,7 @@ contract ApplicationService is
|
|
111
111
|
view
|
112
112
|
returns (Amount premiumAmount)
|
113
113
|
{
|
114
|
-
return
|
115
|
-
_pricingService.calculatePremium(
|
114
|
+
return _pricingService.calculatePremium(
|
116
115
|
info.productNftId,
|
117
116
|
info.riskId,
|
118
117
|
info.sumInsuredAmount,
|
@@ -120,7 +119,7 @@ contract ApplicationService is
|
|
120
119
|
info.applicationData,
|
121
120
|
info.bundleNftId,
|
122
121
|
info.referralId
|
123
|
-
).premiumAmount
|
122
|
+
).premiumAmount;
|
124
123
|
}
|
125
124
|
|
126
125
|
|
@@ -128,6 +127,7 @@ contract ApplicationService is
|
|
128
127
|
address applicationOwner,
|
129
128
|
RiskId riskId,
|
130
129
|
Amount sumInsuredAmount,
|
130
|
+
Amount premiumAmount,
|
131
131
|
Seconds lifetime,
|
132
132
|
NftId bundleNftId,
|
133
133
|
ReferralId referralId,
|
@@ -152,14 +152,45 @@ contract ApplicationService is
|
|
152
152
|
applicationNftId = _registerApplication(productNftId, applicationOwner);
|
153
153
|
|
154
154
|
// create policy info for application
|
155
|
-
IPolicy.PolicyInfo memory applicationInfo =
|
155
|
+
IPolicy.PolicyInfo memory applicationInfo = _createApplicationInfo(
|
156
|
+
productNftId,
|
157
|
+
riskId,
|
158
|
+
sumInsuredAmount,
|
159
|
+
premiumAmount,
|
160
|
+
lifetime,
|
161
|
+
bundleNftId,
|
162
|
+
referralId,
|
163
|
+
applicationData);
|
164
|
+
|
165
|
+
// register application with instance
|
166
|
+
instance.getInstanceStore().createApplication(
|
167
|
+
applicationNftId,
|
168
|
+
applicationInfo);
|
169
|
+
|
170
|
+
// TODO: add logging
|
171
|
+
}
|
172
|
+
|
173
|
+
function _createApplicationInfo(
|
174
|
+
NftId productNftId,
|
175
|
+
RiskId riskId,
|
176
|
+
Amount sumInsuredAmount,
|
177
|
+
Amount premiumAmount,
|
178
|
+
Seconds lifetime,
|
179
|
+
NftId bundleNftId,
|
180
|
+
ReferralId referralId,
|
181
|
+
bytes memory applicationData
|
182
|
+
)
|
183
|
+
internal
|
184
|
+
virtual
|
185
|
+
returns (IPolicy.PolicyInfo memory applicationInfo)
|
186
|
+
{
|
187
|
+
return IPolicy.PolicyInfo({
|
156
188
|
productNftId: productNftId,
|
157
189
|
bundleNftId: bundleNftId,
|
158
190
|
referralId: referralId,
|
159
191
|
riskId: riskId,
|
160
192
|
sumInsuredAmount: sumInsuredAmount,
|
161
|
-
premiumAmount:
|
162
|
-
premiumPaidAmount: AmountLib.zero(),
|
193
|
+
premiumAmount: premiumAmount,
|
163
194
|
lifetime: lifetime,
|
164
195
|
applicationData: applicationData,
|
165
196
|
processData: "",
|
@@ -171,21 +202,8 @@ contract ApplicationService is
|
|
171
202
|
expiredAt: zeroTimestamp(),
|
172
203
|
closedAt: zeroTimestamp()
|
173
204
|
});
|
174
|
-
|
175
|
-
// TODO consider to provide this amount externally
|
176
|
-
// actual calculation is done 2nd time anyway for premium collection
|
177
|
-
// calculate premium amount
|
178
|
-
applicationInfo.premiumAmount = _calculatePremiumAmount(applicationInfo);
|
179
|
-
|
180
|
-
// register application with instance
|
181
|
-
instance.getInstanceStore().createApplication(
|
182
|
-
applicationNftId,
|
183
|
-
applicationInfo);
|
184
|
-
|
185
|
-
// TODO: add logging
|
186
205
|
}
|
187
206
|
|
188
|
-
|
189
207
|
function renew(
|
190
208
|
NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
|
191
209
|
NftId bundleNftId // will likely need a newer bundle for underwriting
|
@@ -194,7 +212,7 @@ contract ApplicationService is
|
|
194
212
|
virtual override
|
195
213
|
returns (NftId applicationNftId)
|
196
214
|
{
|
197
|
-
|
215
|
+
// TODO implement
|
198
216
|
}
|
199
217
|
|
200
218
|
|
@@ -210,7 +228,7 @@ contract ApplicationService is
|
|
210
228
|
external
|
211
229
|
virtual override
|
212
230
|
{
|
213
|
-
|
231
|
+
// TODO implement
|
214
232
|
}
|
215
233
|
|
216
234
|
function revoke(NftId applicationNftId)
|