@etherisc/gif-next 0.0.2-b8e869c-076 → 0.0.2-b9366f5-670
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/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 +2 -2
- 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/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +129 -119
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +41 -45
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +49 -31
- package/artifacts/contracts/example_components/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/example_components/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1558 -0
- package/artifacts/contracts/example_components/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/example_components/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1318 -0
- package/artifacts/contracts/example_components/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/example_components/unpermissioned/SimplePool.sol/SimplePool.json +1664 -0
- package/artifacts/contracts/example_components/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/example_components/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 +2 -2
- 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 +2 -2
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +2 -2
- 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 +2 -2
- 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/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- 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 +5 -5
- 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 +36 -28
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +19 -15
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +5 -5
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +31 -51
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +5 -5
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +65 -109
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +18 -30
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +8 -16
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +5 -9
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +3 -3
- 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 +178 -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/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +98 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1 -16
- 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/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +61 -108
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +31 -47
- 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 -3
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +2 -2
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +2 -2
- 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 +2 -2
- 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/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +2 -2
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +2 -2
- 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/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- 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/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/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -1
- 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 +83 -30
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +53 -19
- 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 +14 -10
- 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 +2 -2
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +2 -2
- 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/distribution/DistributionService.sol +20 -6
- package/contracts/distribution/IDistributionService.sol +8 -2
- package/contracts/example_components/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/example_components/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/example_components/unpermissioned/SimplePool.sol +76 -0
- package/contracts/example_components/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
- package/contracts/instance/InstanceReader.sol +23 -1
- package/contracts/instance/InstanceService.sol +5 -5
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +7 -1
- package/contracts/instance/module/IComponents.sol +1 -1
- package/contracts/instance/module/IPolicy.sol +21 -21
- package/contracts/oracle/Oracle.sol +1 -0
- package/contracts/oracle/OracleService.sol +1 -0
- package/contracts/pool/BundleService.sol +8 -6
- package/contracts/pool/IPoolService.sol +3 -6
- package/contracts/pool/Pool.sol +14 -16
- package/contracts/pool/PoolService.sol +7 -39
- package/contracts/product/ApplicationService.sol +2 -4
- package/contracts/product/BasicProduct.sol +1 -0
- package/contracts/product/ClaimService.sol +107 -36
- package/contracts/product/IClaimService.sol +27 -5
- package/contracts/product/IPolicyService.sol +6 -17
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +0 -1
- package/contracts/product/PolicyService.sol +58 -69
- package/contracts/product/PricingService.sol +37 -40
- package/contracts/product/Product.sol +31 -16
- package/contracts/registry/IRegistry.sol +1 -1
- package/contracts/registry/Registry.sol +1 -1
- package/contracts/registry/ReleaseRegistry.sol +1 -1
- package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
- package/contracts/shared/Component.sol +1 -1
- package/contracts/shared/ComponentService.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +1 -1
- package/contracts/shared/NftOwnable.sol +1 -1
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/StakeManagerLib.sol +18 -0
- package/contracts/staking/Staking.sol +3 -2
- 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
@@ -6,7 +6,7 @@ import {
|
|
6
6
|
} from "../../contracts/type/ObjectType.sol";
|
7
7
|
|
8
8
|
import {
|
9
|
-
|
9
|
+
DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE
|
10
10
|
} from "../../contracts/type/RoleId.sol";
|
11
11
|
|
12
12
|
import {BundleSet} from "../instance/BundleSet.sol";
|
@@ -15,8 +15,6 @@ import {Instance} from "../instance/Instance.sol";
|
|
15
15
|
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
16
16
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
17
17
|
import {ModuleAuthorization} from "../authorization/ModuleAuthorization.sol";
|
18
|
-
import {RoleId} from "../type/RoleId.sol";
|
19
|
-
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
20
18
|
|
21
19
|
|
22
20
|
contract InstanceAuthorizationV3
|
@@ -191,6 +189,8 @@ contract InstanceAuthorizationV3
|
|
191
189
|
functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(POLICY()));
|
192
190
|
_authorize(functions, InstanceStore.updatePolicy.selector, "updatePolicy");
|
193
191
|
_authorize(functions, InstanceStore.updatePolicyState.selector, "updatePolicyState");
|
192
|
+
_authorize(functions, InstanceStore.createPremium.selector, "createPremium");
|
193
|
+
_authorize(functions, InstanceStore.updatePremiumState.selector, "updatePremiumState");
|
194
194
|
|
195
195
|
// authorize claim service role
|
196
196
|
functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(CLAIM()));
|
@@ -6,7 +6,7 @@ import {ClaimId} from "../type/ClaimId.sol";
|
|
6
6
|
import {DistributorType} from "../type/DistributorType.sol";
|
7
7
|
import {Key32} from "../type/Key32.sol";
|
8
8
|
import {NftId} from "../type/NftId.sol";
|
9
|
-
import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
|
9
|
+
import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PREMIUM, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
|
10
10
|
import {PayoutId} from "../type/PayoutId.sol";
|
11
11
|
import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
|
12
12
|
import {RequestId} from "../type/RequestId.sol";
|
@@ -80,6 +80,25 @@ contract InstanceReader {
|
|
80
80
|
return _store.getState(toPolicyKey(policyNftId));
|
81
81
|
}
|
82
82
|
|
83
|
+
function getPremiumInfo(NftId policyNftId)
|
84
|
+
public
|
85
|
+
view
|
86
|
+
returns (IPolicy.PremiumInfo memory info)
|
87
|
+
{
|
88
|
+
bytes memory data = _store.getData(toPremiumKey(policyNftId));
|
89
|
+
if (data.length > 0) {
|
90
|
+
return abi.decode(data, (IPolicy.PremiumInfo));
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
function getPremiumInfoState(NftId policyNftId)
|
95
|
+
public
|
96
|
+
view
|
97
|
+
returns (StateId state)
|
98
|
+
{
|
99
|
+
return _store.getState(toPremiumKey(policyNftId));
|
100
|
+
}
|
101
|
+
|
83
102
|
function getBundleState(NftId bundleNftId)
|
84
103
|
public
|
85
104
|
view
|
@@ -364,6 +383,9 @@ contract InstanceReader {
|
|
364
383
|
return policyNftId.toKey32(POLICY());
|
365
384
|
}
|
366
385
|
|
386
|
+
function toPremiumKey(NftId policyNftId) public pure returns (Key32) {
|
387
|
+
return policyNftId.toKey32(PREMIUM());
|
388
|
+
}
|
367
389
|
|
368
390
|
function toDistributorKey(NftId distributorNftId) public pure returns (Key32) {
|
369
391
|
return distributorNftId.toKey32(DISTRIBUTOR());
|
@@ -60,7 +60,7 @@ contract InstanceService is
|
|
60
60
|
|
61
61
|
modifier onlyInstance() {
|
62
62
|
address instanceAddress = msg.sender;
|
63
|
-
NftId instanceNftId = getRegistry().
|
63
|
+
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
64
64
|
if (instanceNftId.eqz()) {
|
65
65
|
revert ErrorInstanceServiceNotRegistered(instanceAddress);
|
66
66
|
}
|
@@ -132,7 +132,7 @@ contract InstanceService is
|
|
132
132
|
virtual
|
133
133
|
onlyInstance()
|
134
134
|
{
|
135
|
-
NftId instanceNftId = getRegistry().
|
135
|
+
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
136
136
|
_stakingService.setInstanceLockingPeriod(
|
137
137
|
instanceNftId,
|
138
138
|
stakeLockingPeriod);
|
@@ -144,7 +144,7 @@ contract InstanceService is
|
|
144
144
|
virtual
|
145
145
|
onlyInstance()
|
146
146
|
{
|
147
|
-
NftId instanceNftId = getRegistry().
|
147
|
+
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
148
148
|
_stakingService.setInstanceRewardRate(
|
149
149
|
instanceNftId,
|
150
150
|
rewardRate);
|
@@ -156,7 +156,7 @@ contract InstanceService is
|
|
156
156
|
virtual
|
157
157
|
onlyInstance()
|
158
158
|
{
|
159
|
-
NftId instanceNftId = getRegistry().
|
159
|
+
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
160
160
|
_stakingService.refillInstanceRewardReserves(
|
161
161
|
instanceNftId,
|
162
162
|
rewardProvider,
|
@@ -170,7 +170,7 @@ contract InstanceService is
|
|
170
170
|
onlyInstance()
|
171
171
|
returns (Amount newBalance)
|
172
172
|
{
|
173
|
-
NftId instanceNftId = getRegistry().
|
173
|
+
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
174
174
|
_stakingService.withdrawInstanceRewardReserves(
|
175
175
|
instanceNftId,
|
176
176
|
dipAmount);
|
@@ -7,7 +7,7 @@ import {Amount} from "../type/Amount.sol";
|
|
7
7
|
import {Key32} from "../type/Key32.sol";
|
8
8
|
import {NftId} from "../type/NftId.sol";
|
9
9
|
import {ClaimId} from "../type/ClaimId.sol";
|
10
|
-
import {ObjectType, BUNDLE, POLICY, POOL, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
|
10
|
+
import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
|
11
11
|
import {RequestId} from "../type/RequestId.sol";
|
12
12
|
import {RiskId} from "../type/RiskId.sol";
|
13
13
|
import {StateId} from "../type/StateId.sol";
|
@@ -195,6 +195,16 @@ contract InstanceStore is
|
|
195
195
|
_updateState(_toNftKey32(policyNftId, POLICY()), newState);
|
196
196
|
}
|
197
197
|
|
198
|
+
|
199
|
+
//--- Premium (Policy) ----------------------------------------------//
|
200
|
+
function createPremium(NftId policyNftId, IPolicy.PremiumInfo memory premium) external restricted() {
|
201
|
+
_create(_toNftKey32(policyNftId, PREMIUM()), abi.encode(premium));
|
202
|
+
}
|
203
|
+
|
204
|
+
function updatePremiumState(NftId policyNftId, StateId newState) external restricted() {
|
205
|
+
_updateState(_toNftKey32(policyNftId, PREMIUM()), newState);
|
206
|
+
}
|
207
|
+
|
198
208
|
//--- Claim -------------------------------------------------------------//
|
199
209
|
function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
|
200
210
|
_create(_toClaimKey32(policyNftId, claimId), abi.encode(claim));
|
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
5
5
|
|
6
|
-
import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL} from "../../type/ObjectType.sol";
|
6
|
+
import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PREMIUM, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL} from "../../type/ObjectType.sol";
|
7
7
|
import {ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID, FULFILLED, FAILED, CANCELLED} from "../../type/StateId.sol";
|
8
8
|
import {Lifecycle} from "../../shared/Lifecycle.sol";
|
9
9
|
|
@@ -23,6 +23,7 @@ contract ObjectLifecycle is
|
|
23
23
|
_setupBundleLifecycle();
|
24
24
|
_setupComponentLifecycle();
|
25
25
|
_setupPolicyLifecycle();
|
26
|
+
_setupPremiumLifecycle();
|
26
27
|
_setupClaimLifecycle();
|
27
28
|
_setupPayoutLifecycle();
|
28
29
|
_setupRiskLifecycle();
|
@@ -57,6 +58,11 @@ contract ObjectLifecycle is
|
|
57
58
|
setStateTransition(POLICY(), COLLATERALIZED(), CLOSED());
|
58
59
|
}
|
59
60
|
|
61
|
+
function _setupPremiumLifecycle() private {
|
62
|
+
setInitialState(PREMIUM(), EXPECTED());
|
63
|
+
setStateTransition(PREMIUM(), EXPECTED(), PAID());
|
64
|
+
}
|
65
|
+
|
60
66
|
function _setupClaimLifecycle() private {
|
61
67
|
setInitialState(CLAIM(), SUBMITTED());
|
62
68
|
setStateTransition(CLAIM(), SUBMITTED(), CONFIRMED());
|
@@ -35,8 +35,8 @@ interface IComponents {
|
|
35
35
|
|
36
36
|
|
37
37
|
struct PoolInfo {
|
38
|
-
RoleId bundleOwnerRole; // the required role for bundle owners
|
39
38
|
Amount maxBalanceAmount; // max balance amount allowed for pool
|
39
|
+
RoleId bundleOwnerRole; // the required role for bundle owners
|
40
40
|
bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
|
41
41
|
bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
|
42
42
|
bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
|
@@ -11,7 +11,7 @@ import {Timestamp} from "../../type/Timestamp.sol";
|
|
11
11
|
|
12
12
|
interface IPolicy {
|
13
13
|
|
14
|
-
struct
|
14
|
+
struct PremiumInfo {
|
15
15
|
// premium splitting per target wallet
|
16
16
|
Amount productFeeAmount;
|
17
17
|
Amount distributionFeeAndCommissionAmount;
|
@@ -19,26 +19,26 @@ interface IPolicy {
|
|
19
19
|
|
20
20
|
// detailed positions
|
21
21
|
// this is the net premium calculated by the product
|
22
|
-
|
22
|
+
Amount netPremiumAmount;
|
23
23
|
// fullPremium = netPremium + all fixed amounts + all variable amounts (excl commission and minDistribtuionOwnerFee variable part)
|
24
|
-
|
24
|
+
Amount fullPremiumAmount;
|
25
25
|
// effective premium = fullPremium - discount
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
26
|
+
Amount premiumAmount;
|
27
|
+
Amount productFeeFixAmount;
|
28
|
+
Amount poolFeeFixAmount;
|
29
|
+
Amount bundleFeeFixAmount;
|
30
|
+
Amount distributionFeeFixAmount;
|
31
|
+
Amount productFeeVarAmount;
|
32
|
+
Amount poolFeeVarAmount;
|
33
|
+
Amount bundleFeeVarAmount;
|
34
|
+
Amount distributionFeeVarAmount;
|
35
|
+
Amount distributionOwnerFeeFixAmount;
|
36
36
|
// this is the remaining amount when the commission and discount are subtracted from the distribution fee variable part (must be at least the minDistributionOwnerFee)
|
37
|
-
|
37
|
+
Amount distributionOwnerFeeVarAmount;
|
38
38
|
// this value is based on distributor type referenced in the referral
|
39
|
-
|
39
|
+
Amount commissionAmount;
|
40
40
|
// this is based on referral used
|
41
|
-
|
41
|
+
Amount discountAmount;
|
42
42
|
}
|
43
43
|
|
44
44
|
/// @dev policy data for the full policy lifecycle
|
@@ -49,7 +49,6 @@ interface IPolicy {
|
|
49
49
|
RiskId riskId;
|
50
50
|
Amount sumInsuredAmount;
|
51
51
|
Amount premiumAmount; // expected premium at application time
|
52
|
-
Amount premiumPaidAmount; // actual paid premium
|
53
52
|
Seconds lifetime;
|
54
53
|
// policy application data, no changes after applying for a policy
|
55
54
|
bytes applicationData;
|
@@ -69,8 +68,8 @@ interface IPolicy {
|
|
69
68
|
Amount paidAmount;
|
70
69
|
uint8 payoutsCount;
|
71
70
|
uint8 openPayoutsCount;
|
72
|
-
bytes submissionData; // claim submission data, no changes after submitting the claim
|
73
|
-
bytes processData; // data that may include information supporting confirm or decline
|
71
|
+
bytes submissionData; // use case specific claim submission data, no changes after submitting the claim
|
72
|
+
bytes processData; // use case specific data that may include information supporting confirm or decline
|
74
73
|
Timestamp closedAt; // payment of confirmed claim amount (or declinedAt)
|
75
74
|
}
|
76
75
|
|
@@ -78,7 +77,8 @@ interface IPolicy {
|
|
78
77
|
struct PayoutInfo {
|
79
78
|
ClaimId claimId;
|
80
79
|
Amount amount;
|
81
|
-
|
82
|
-
|
80
|
+
address beneficiary; // for address(0) beneficiary is policy nft owner
|
81
|
+
bytes data; // use case specific supporting data
|
82
|
+
Timestamp paidAt; // timestamp for actual payout
|
83
83
|
}
|
84
84
|
}
|
@@ -64,6 +64,7 @@ contract OracleService is
|
|
64
64
|
ORACLE(),
|
65
65
|
true); // only active
|
66
66
|
|
67
|
+
// TODO move to stronger validation, requester and oracle need to belong to same product cluster
|
67
68
|
// check that requester and oracle share same instance
|
68
69
|
if (componentInfo.parentNftId != oracleInfo.parentNftId) {
|
69
70
|
revert ErrorOracleServiceInstanceMismatch(componentInfo.parentNftId, oracleInfo.parentNftId);
|
@@ -121,12 +121,14 @@ contract BundleService is
|
|
121
121
|
})
|
122
122
|
);
|
123
123
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
124
|
+
if (stakingAmount.gtz()) {
|
125
|
+
// bundle book keeping
|
126
|
+
_componentService.increaseBundleBalance(
|
127
|
+
instanceStore,
|
128
|
+
bundleNftId,
|
129
|
+
stakingAmount,
|
130
|
+
AmountLib.zero()); // fee amount
|
131
|
+
}
|
130
132
|
|
131
133
|
// put bundle under bundle managemet
|
132
134
|
BundleSet bundleManager = instance.getBundleSet();
|
@@ -80,19 +80,16 @@ interface IPoolService is IService {
|
|
80
80
|
) external;
|
81
81
|
|
82
82
|
|
83
|
-
/// @dev create a new bundle
|
84
|
-
/// staking fees will be deducted by the pool service from the staking amount
|
83
|
+
/// @dev create a new empty bundle with the provided parameters
|
85
84
|
/// may only be called by registered and unlocked pool components.
|
86
|
-
/// The pool balance is equal to the pool fees plus the capital of all bundles.
|
87
85
|
function createBundle(
|
88
86
|
address owner, // initial bundle owner
|
89
87
|
Fee memory fee, // fees deducted from premium that go to bundle owner
|
90
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
91
88
|
Seconds lifetime, // initial duration for which new policies are covered
|
92
89
|
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
93
90
|
)
|
94
91
|
external
|
95
|
-
returns(NftId bundleNftId
|
92
|
+
returns(NftId bundleNftId); // the nft id of the newly created bundle
|
96
93
|
|
97
94
|
|
98
95
|
/// @dev increase stakes for bundle
|
@@ -130,7 +127,7 @@ interface IPoolService is IService {
|
|
130
127
|
|
131
128
|
|
132
129
|
/// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
|
133
|
-
function processSale(NftId bundleNftId, IPolicy.
|
130
|
+
function processSale(NftId bundleNftId, IPolicy.PremiumInfo memory premium) external;
|
134
131
|
|
135
132
|
|
136
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
|
|
@@ -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
|
|
@@ -21,7 +21,6 @@ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
|
21
21
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
22
22
|
import {KEEP_STATE} from "../type/StateId.sol";
|
23
23
|
import {Seconds} from "../type/Seconds.sol";
|
24
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
25
24
|
import {UFixed} from "../type/UFixed.sol";
|
26
25
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
27
26
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
@@ -107,56 +106,25 @@ contract PoolService is
|
|
107
106
|
function createBundle(
|
108
107
|
address bundleOwner, // initial bundle owner
|
109
108
|
Fee memory fee, // fees deducted from premium that go to bundle owner
|
110
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
111
109
|
Seconds lifetime, // initial duration for which new policies are covered
|
112
110
|
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
113
111
|
)
|
114
112
|
external
|
115
113
|
virtual
|
116
|
-
returns(NftId bundleNftId
|
114
|
+
returns(NftId bundleNftId)
|
117
115
|
{
|
118
116
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
119
117
|
|
120
|
-
|
121
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
122
|
-
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
123
|
-
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
124
|
-
if (currentPoolBalance + stakingAmount > poolInfo.maxBalanceAmount) {
|
125
|
-
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, stakingAmount);
|
126
|
-
}
|
127
|
-
}
|
128
|
-
|
129
|
-
|
130
|
-
Amount stakingFeeAmount;
|
131
|
-
(stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
|
132
|
-
_getStakingFee(instance.getInstanceReader(), poolNftId),
|
133
|
-
stakingAmount);
|
134
|
-
|
135
|
-
|
118
|
+
// create the empty bundle
|
136
119
|
bundleNftId = _bundleService.create(
|
137
120
|
instance,
|
138
121
|
poolNftId,
|
139
122
|
bundleOwner,
|
140
123
|
fee,
|
141
|
-
|
124
|
+
AmountLib.zero(),
|
142
125
|
lifetime,
|
143
126
|
filter);
|
144
127
|
|
145
|
-
// pool book keeping
|
146
|
-
_componentService.increasePoolBalance(
|
147
|
-
instance.getInstanceStore(),
|
148
|
-
poolNftId,
|
149
|
-
netStakedAmount,
|
150
|
-
stakingFeeAmount);
|
151
|
-
|
152
|
-
// TODO only collect staking token when pool is not externally managed
|
153
|
-
// pool bookkeeping and collect tokens from bundle owner
|
154
|
-
_collectStakingAmount(
|
155
|
-
instance.getInstanceReader(),
|
156
|
-
poolNftId,
|
157
|
-
bundleOwner,
|
158
|
-
stakingAmount);
|
159
|
-
|
160
128
|
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
161
129
|
}
|
162
130
|
|
@@ -316,7 +284,7 @@ contract PoolService is
|
|
316
284
|
|
317
285
|
function processSale(
|
318
286
|
NftId bundleNftId,
|
319
|
-
IPolicy.
|
287
|
+
IPolicy.PremiumInfo memory premium
|
320
288
|
)
|
321
289
|
external
|
322
290
|
virtual
|
@@ -328,9 +296,9 @@ contract PoolService is
|
|
328
296
|
IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
|
329
297
|
IInstance instance = IInstance(instanceObjectInfo.objectAddress);
|
330
298
|
|
331
|
-
Amount poolFeeAmount =
|
332
|
-
Amount bundleFeeAmount =
|
333
|
-
Amount bundleNetAmount =
|
299
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
300
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
301
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
334
302
|
|
335
303
|
InstanceStore instanceStore = instance.getInstanceStore();
|
336
304
|
_componentService.increasePoolBalance(
|
@@ -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
|
|
@@ -192,7 +191,6 @@ contract ApplicationService is
|
|
192
191
|
riskId: riskId,
|
193
192
|
sumInsuredAmount: sumInsuredAmount,
|
194
193
|
premiumAmount: premiumAmount,
|
195
|
-
premiumPaidAmount: AmountLib.zero(),
|
196
194
|
lifetime: lifetime,
|
197
195
|
applicationData: applicationData,
|
198
196
|
processData: "",
|