@etherisc/gif-next 0.0.2-c9711ab-345 → 0.0.2-c9ad04b-619
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 +21 -21
- 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 +42 -248
- 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 -222
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +129 -286
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +53 -120
- 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 +1411 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -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 +10 -99
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +71 -71
- 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 +225 -68
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +34 -146
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +30 -81
- 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 +32 -238
- 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 -222
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -144
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +29 -80
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +5 -227
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +76 -235
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +51 -110
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +0 -31
- 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 +63 -78
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +5 -227
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +101 -332
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +32 -135
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +31 -162
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +26 -89
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +3 -225
- 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 +185 -175
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +53 -100
- 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 -380
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +44 -111
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +113 -270
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +52 -123
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +3 -225
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +221 -21
- 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 +419 -82
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +229 -114
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -130
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +22 -73
- 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 +24 -14
- 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 -211
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +84 -212
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +55 -114
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -112
- 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/IPolicyHolder.sol/IPolicyHolder.json +0 -42
- 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/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -222
- 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 +6 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +4 -136
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +0 -112
- 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 +85 -262
- 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 +42 -89
- 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 +26 -138
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +26 -77
- 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 +14 -65
- 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/AccessAdmin.sol +1 -3
- package/contracts/authorization/Authorization.sol +0 -1
- package/contracts/distribution/Distribution.sol +1 -1
- package/contracts/distribution/DistributionService.sol +26 -27
- 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 +10 -35
- package/contracts/instance/InstanceAdmin.sol +23 -4
- package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
- package/contracts/instance/InstanceReader.sol +24 -7
- package/contracts/instance/InstanceService.sol +60 -36
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IComponents.sol +1 -1
- package/contracts/instance/module/IPolicy.sol +22 -22
- package/contracts/oracle/Oracle.sol +2 -1
- package/contracts/oracle/OracleService.sol +4 -3
- package/contracts/pool/BundleService.sol +13 -26
- package/contracts/pool/IBundleService.sol +2 -3
- package/contracts/pool/IPoolService.sol +29 -18
- package/contracts/pool/Pool.sol +15 -17
- package/contracts/pool/PoolService.sol +45 -98
- package/contracts/product/ApplicationService.sol +41 -23
- package/contracts/product/BasicProduct.sol +1 -0
- package/contracts/product/ClaimService.sol +116 -46
- 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 +230 -186
- package/contracts/product/PricingService.sol +44 -43
- package/contracts/product/Product.sol +50 -36
- package/contracts/product/{ProductService.sol → RiskService.sol} +5 -7
- package/contracts/product/{ProductServiceManager.sol → RiskServiceManager.sol} +8 -8
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +49 -15
- package/contracts/registry/Registry.sol +321 -195
- package/contracts/registry/RegistryAdmin.sol +150 -51
- package/contracts/registry/RegistryService.sol +2 -2
- package/contracts/registry/ReleaseRegistry.sol +12 -6
- package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
- package/contracts/shared/Component.sol +17 -29
- package/contracts/shared/ComponentService.sol +16 -26
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
- package/contracts/shared/IPolicyHolder.sol +0 -9
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +4 -4
- package/contracts/shared/NftOwnable.sol +5 -5
- package/contracts/shared/PolicyHolder.sol +5 -48
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +5 -5
- 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 +10 -28
- package/contracts/staking/StakingService.sol +10 -14
- 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/contracts/upgradeability/ProxyManager.sol +1 -1
- 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/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
@@ -30,9 +30,7 @@ interface IPoolService is IService {
|
|
30
30
|
error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
|
31
31
|
error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
|
32
32
|
error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
|
33
|
-
|
34
|
-
error ErrorPoolServiceAmountIsZero();
|
35
|
-
|
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;
|
@@ -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
|
@@ -158,7 +158,7 @@ abstract contract Pool is
|
|
158
158
|
$._bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
159
159
|
$._componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
160
160
|
|
161
|
-
|
161
|
+
_registerInterface(type(IPoolComponent).interfaceId);
|
162
162
|
}
|
163
163
|
|
164
164
|
/// @dev increases the staked tokens by the specified amount
|
@@ -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
|
|
@@ -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";
|
@@ -23,7 +21,6 @@ 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";
|
@@ -47,8 +44,8 @@ contract PoolService is
|
|
47
44
|
bytes memory data
|
48
45
|
)
|
49
46
|
internal
|
50
|
-
initializer
|
51
47
|
virtual override
|
48
|
+
initializer()
|
52
49
|
{
|
53
50
|
(
|
54
51
|
address registryAddress,,
|
@@ -56,7 +53,7 @@ contract PoolService is
|
|
56
53
|
address authority
|
57
54
|
) = abi.decode(data, (address, address, address));
|
58
55
|
|
59
|
-
|
56
|
+
_initializeService(registryAddress, authority, owner);
|
60
57
|
|
61
58
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
62
59
|
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
@@ -65,7 +62,7 @@ contract PoolService is
|
|
65
62
|
|
66
63
|
_staking = IStaking(getRegistry().getStakingAddress());
|
67
64
|
|
68
|
-
|
65
|
+
_registerInterface(type(IPoolService).interfaceId);
|
69
66
|
}
|
70
67
|
|
71
68
|
/// @inheritdoc IPoolService
|
@@ -109,55 +106,25 @@ contract PoolService is
|
|
109
106
|
function createBundle(
|
110
107
|
address bundleOwner, // initial bundle owner
|
111
108
|
Fee memory fee, // fees deducted from premium that go to bundle owner
|
112
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
113
109
|
Seconds lifetime, // initial duration for which new policies are covered
|
114
110
|
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
115
111
|
)
|
116
112
|
external
|
117
113
|
virtual
|
118
|
-
returns(NftId bundleNftId
|
114
|
+
returns(NftId bundleNftId)
|
119
115
|
{
|
120
116
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
121
117
|
|
122
|
-
|
123
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
124
|
-
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
125
|
-
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
126
|
-
if (currentPoolBalance + stakingAmount > poolInfo.maxBalanceAmount) {
|
127
|
-
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, stakingAmount);
|
128
|
-
}
|
129
|
-
}
|
130
|
-
|
131
|
-
|
132
|
-
Amount stakingFeeAmount;
|
133
|
-
(stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
|
134
|
-
_getStakingFee(instance.getInstanceReader(), poolNftId),
|
135
|
-
stakingAmount);
|
136
|
-
|
137
|
-
|
118
|
+
// create the empty bundle
|
138
119
|
bundleNftId = _bundleService.create(
|
139
120
|
instance,
|
140
121
|
poolNftId,
|
141
122
|
bundleOwner,
|
142
123
|
fee,
|
143
|
-
|
124
|
+
AmountLib.zero(),
|
144
125
|
lifetime,
|
145
126
|
filter);
|
146
127
|
|
147
|
-
// pool book keeping
|
148
|
-
_componentService.increasePoolBalance(
|
149
|
-
instance.getInstanceStore(),
|
150
|
-
poolNftId,
|
151
|
-
netStakedAmount,
|
152
|
-
stakingFeeAmount);
|
153
|
-
|
154
|
-
// pool bookkeeping and collect tokens from bundle owner
|
155
|
-
_collectStakingAmount(
|
156
|
-
instance.getInstanceReader(),
|
157
|
-
poolNftId,
|
158
|
-
bundleOwner,
|
159
|
-
stakingAmount);
|
160
|
-
|
161
128
|
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
162
129
|
}
|
163
130
|
|
@@ -192,24 +159,10 @@ contract PoolService is
|
|
192
159
|
|
193
160
|
if ((unstakedAmount + feeAmount).gtz()){
|
194
161
|
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
// check allowance
|
201
|
-
uint256 tokenAllowance = token.allowance(poolComponentInfo.wallet, address(tokenHandler));
|
202
|
-
if (tokenAllowance < (unstakedAmount.toInt() + feeAmount.toInt())) {
|
203
|
-
revert ErrorPoolServiceWalletAllowanceTooSmall(
|
204
|
-
poolComponentInfo.wallet,
|
205
|
-
address(tokenHandler),
|
206
|
-
tokenAllowance,
|
207
|
-
unstakedAmount.toInt() + feeAmount.toInt());
|
208
|
-
}
|
209
|
-
|
210
|
-
// transfer amount to bundle owner
|
211
|
-
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
212
|
-
tokenHandler.transfer(poolComponentInfo.wallet, bundleOwner, unstakedAmount + feeAmount);
|
162
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
163
|
+
poolComponentInfo.wallet,
|
164
|
+
getRegistry().ownerOf(bundleNftId),
|
165
|
+
unstakedAmount + feeAmount);
|
213
166
|
}
|
214
167
|
}
|
215
168
|
|
@@ -256,13 +209,14 @@ contract PoolService is
|
|
256
209
|
|
257
210
|
// collect tokens from bundle owner
|
258
211
|
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
212
|
+
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
213
|
+
|
214
|
+
// TODO only collect staking token when pool is not externally managed
|
259
215
|
_collectStakingAmount(
|
260
216
|
instanceReader,
|
261
217
|
poolNftId,
|
262
218
|
bundleOwner,
|
263
219
|
amount);
|
264
|
-
|
265
|
-
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
266
220
|
}
|
267
221
|
|
268
222
|
/// @inheritdoc IPoolService
|
@@ -281,10 +235,6 @@ contract PoolService is
|
|
281
235
|
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
282
236
|
}
|
283
237
|
|
284
|
-
if (amount.eqz()) {
|
285
|
-
revert ErrorPoolServiceAmountIsZero();
|
286
|
-
}
|
287
|
-
|
288
238
|
// call bundle service for bookkeeping and additional checks
|
289
239
|
Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
|
290
240
|
|
@@ -302,29 +252,39 @@ contract PoolService is
|
|
302
252
|
|
303
253
|
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
304
254
|
address poolWallet = poolComponentInfo.wallet;
|
305
|
-
|
306
|
-
// check allowance
|
307
|
-
{
|
308
|
-
IERC20Metadata token = IERC20Metadata(poolComponentInfo.token);
|
309
|
-
uint256 tokenAllowance = token.allowance(poolWallet, address(poolComponentInfo.tokenHandler));
|
310
|
-
if (tokenAllowance < unstakedAmount.toInt()) {
|
311
|
-
revert ErrorPoolServiceWalletAllowanceTooSmall(poolWallet, address(poolComponentInfo.tokenHandler), tokenAllowance, amount.toInt());
|
312
|
-
}
|
313
|
-
}
|
314
|
-
|
315
255
|
// transfer amount to bundle owner
|
316
256
|
address owner = getRegistry().ownerOf(bundleNftId);
|
317
|
-
// TODO: centralize token handling (issue #471)
|
318
|
-
poolComponentInfo.tokenHandler.transfer(poolWallet, owner, unstakedAmount);
|
319
|
-
|
320
257
|
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
|
321
|
-
|
258
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
259
|
+
poolWallet,
|
260
|
+
owner,
|
261
|
+
unstakedAmount);
|
322
262
|
return unstakedAmount;
|
323
263
|
}
|
324
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
|
+
|
325
285
|
function processSale(
|
326
286
|
NftId bundleNftId,
|
327
|
-
IPolicy.
|
287
|
+
IPolicy.PremiumInfo memory premium
|
328
288
|
)
|
329
289
|
external
|
330
290
|
virtual
|
@@ -336,9 +296,9 @@ contract PoolService is
|
|
336
296
|
IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
|
337
297
|
IInstance instance = IInstance(instanceObjectInfo.objectAddress);
|
338
298
|
|
339
|
-
Amount poolFeeAmount =
|
340
|
-
Amount bundleFeeAmount =
|
341
|
-
Amount bundleNetAmount =
|
299
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
300
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
301
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
342
302
|
|
343
303
|
InstanceStore instanceStore = instance.getInstanceStore();
|
344
304
|
_componentService.increasePoolBalance(
|
@@ -524,7 +484,6 @@ contract PoolService is
|
|
524
484
|
}
|
525
485
|
|
526
486
|
|
527
|
-
// TODO create (I)TreasuryService that deals with all gif related token transfers
|
528
487
|
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
529
488
|
function _collectStakingAmount(
|
530
489
|
InstanceReader instanceReader,
|
@@ -537,23 +496,11 @@ contract PoolService is
|
|
537
496
|
|
538
497
|
// collecting investor token
|
539
498
|
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
540
|
-
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
541
499
|
address poolWallet = componentInfo.wallet;
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
revert ErrorPoolServiceWalletAllowanceTooSmall(bundleOwner, address(tokenHandler), allowance, amount.toInt());
|
547
|
-
}
|
548
|
-
|
549
|
-
// TODO: centralize token handling (issue #471)
|
550
|
-
tokenHandler.transfer(
|
551
|
-
bundleOwner,
|
552
|
-
poolWallet,
|
553
|
-
amount);
|
554
|
-
} else {
|
555
|
-
revert ErrorPoolServiceAmountIsZero();
|
556
|
-
}
|
500
|
+
componentInfo.tokenHandler.collectTokens(
|
501
|
+
bundleOwner,
|
502
|
+
poolWallet,
|
503
|
+
amount);
|
557
504
|
}
|
558
505
|
|
559
506
|
function _getDomain() internal pure override returns(ObjectType) {
|
@@ -46,13 +46,13 @@ contract ApplicationService is
|
|
46
46
|
address authority
|
47
47
|
) = abi.decode(data, (address, address, address));
|
48
48
|
|
49
|
-
|
49
|
+
_initializeService(registryAddress, address(0), owner);
|
50
50
|
|
51
51
|
_distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
|
52
52
|
_pricingService = IPricingService(_getServiceAddress(PRICE()));
|
53
53
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
54
54
|
|
55
|
-
|
55
|
+
_registerInterface(type(IApplicationService).interfaceId);
|
56
56
|
}
|
57
57
|
|
58
58
|
|
@@ -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)
|