@etherisc/gif-next 0.0.2-78e428e-483 → 0.0.2-79292f9-089
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 +10 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +38 -97
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -75
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +76 -131
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +64 -76
- 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 +0 -31
- 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 +71 -71
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +7 -7
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +24 -24
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +40 -40
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +24 -24
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- 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/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +26 -85
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +0 -37
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -75
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +26 -26
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +39 -39
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +7 -82
- 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 +54 -109
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -72
- 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 +43 -38
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +5 -80
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +87 -162
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +45 -85
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +27 -38
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +37 -45
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +0 -75
- 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 +74 -58
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +59 -59
- 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 +16 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +124 -129
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- 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 +190 -227
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +55 -55
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +52 -52
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +52 -52
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +0 -75
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +695 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +702 -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 +220 -20
- 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 +418 -81
- 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 +12 -12
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +32 -32
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +4 -4
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +29 -55
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +8 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +72 -88
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +65 -73
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -37
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -75
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -26
- 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 +30 -113
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -108
- 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 +51 -51
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +22 -22
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +36 -36
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
- 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/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- 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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- 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/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/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/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +15 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +19 -19
- 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 +0 -1
- package/contracts/authorization/Authorization.sol +6 -4
- package/contracts/authorization/IAccessAdmin.sol +0 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -3
- package/contracts/distribution/DistributionService.sol +4 -19
- package/contracts/distribution/IDistributionService.sol +1 -3
- package/contracts/instance/IInstance.sol +7 -30
- package/contracts/instance/Instance.sol +8 -33
- package/contracts/instance/InstanceAdmin.sol +23 -4
- package/contracts/instance/InstanceReader.sol +2 -7
- package/contracts/instance/InstanceService.sol +54 -31
- package/contracts/instance/base/ObjectLifecycle.sol +2 -3
- package/contracts/instance/module/IComponents.sol +1 -2
- package/contracts/instance/module/IPolicy.sol +1 -1
- package/contracts/oracle/Oracle.sol +1 -0
- package/contracts/oracle/OracleService.sol +2 -1
- package/contracts/pool/BasicPool.sol +2 -2
- package/contracts/pool/BasicPoolAuthorization.sol +1 -1
- package/contracts/pool/BundleService.sol +8 -23
- package/contracts/pool/IBundleService.sol +2 -3
- package/contracts/pool/IPoolService.sol +31 -17
- package/contracts/pool/Pool.sol +12 -12
- package/contracts/pool/PoolService.sol +62 -75
- package/contracts/product/ApplicationService.sol +38 -18
- package/contracts/product/BasicProduct.sol +1 -0
- package/contracts/product/ClaimService.sol +9 -10
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +1 -0
- package/contracts/product/IPolicyService.sol +17 -17
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +193 -138
- package/contracts/product/PricingService.sol +6 -2
- package/contracts/product/Product.sol +22 -22
- 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 +48 -14
- package/contracts/registry/Registry.sol +324 -195
- package/contracts/registry/RegistryAdmin.sol +150 -51
- package/contracts/registry/RegistryService.sol +1 -2
- package/contracts/registry/ReleaseLifecycle.sol +3 -1
- package/contracts/registry/ReleaseRegistry.sol +125 -72
- package/contracts/registry/ServiceAuthorizationV3.sol +1 -1
- package/contracts/shared/Component.sol +11 -23
- package/contracts/shared/ComponentService.sol +14 -24
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/StakeManagerLib.sol +0 -25
- package/contracts/staking/Staking.sol +6 -25
- package/contracts/staking/StakingService.sol +9 -13
- package/contracts/type/StateId.sol +4 -0
- package/contracts/type/Version.sol +5 -2
- package/contracts/upgradeability/ProxyManager.sol +14 -14
- package/contracts/upgradeability/Versionable.sol +2 -2
- 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
@@ -17,7 +17,7 @@ import {UFixed} from "../type/UFixed.sol";
|
|
17
17
|
|
18
18
|
interface IPoolService is IService {
|
19
19
|
|
20
|
-
event
|
20
|
+
event LogPoolServiceMaxBalanceAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
|
21
21
|
event LogPoolServiceBundleOwnerRoleSet(NftId poolNftId, RoleId bundleOwnerRole);
|
22
22
|
|
23
23
|
event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
|
@@ -29,16 +29,14 @@ interface IPoolService is IService {
|
|
29
29
|
error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
|
30
30
|
error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
|
31
31
|
error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
|
32
|
-
error
|
33
|
-
|
34
|
-
error ErrorPoolServiceAmountIsZero();
|
35
|
-
|
32
|
+
error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
|
33
|
+
|
36
34
|
/// @dev defines the required role for bundle owners for the calling pool
|
37
35
|
/// default implementation returns PUBLIC ROLE
|
38
36
|
function setBundleOwnerRole(RoleId bundleOwnerRole) external;
|
39
37
|
|
40
|
-
/// @dev sets the max
|
41
|
-
function
|
38
|
+
/// @dev sets the max balance amount for the calling pool
|
39
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount) external;
|
42
40
|
|
43
41
|
/// @dev locks required collateral to cover the specified application (and turn it into a policy)
|
44
42
|
/// - retention level == 1: the full collateral amount will be locked by the specified bundle
|
@@ -97,6 +95,18 @@ interface IPoolService is IService {
|
|
97
95
|
returns(NftId bundleNftId, Amount netStakedAmount); // the nft id of the newly created bundle
|
98
96
|
|
99
97
|
|
98
|
+
/// @dev increase stakes for bundle
|
99
|
+
/// staking fees will be deducted by the pool service from the staking amount
|
100
|
+
/// may only be called by registered and unlocked pool components
|
101
|
+
function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
|
102
|
+
|
103
|
+
|
104
|
+
/// @dev decrease stakes for bundle
|
105
|
+
/// performance fees will be deducted by the pool service from the staking amount
|
106
|
+
/// may only be called by registered and unlocked pool components
|
107
|
+
function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
|
108
|
+
|
109
|
+
|
100
110
|
/// @dev closes the specified bundle
|
101
111
|
/// only open bundles (active or locked) may be closed
|
102
112
|
/// to close a bundle it may not have any non-closed polices attached to it
|
@@ -105,18 +115,22 @@ interface IPoolService is IService {
|
|
105
115
|
function closeBundle(NftId bundleNftId) external;
|
106
116
|
|
107
117
|
|
108
|
-
/// @dev
|
109
|
-
function
|
118
|
+
/// @dev Fund the specified pool wallet with the provided amount.
|
119
|
+
/// This function will collect the amount from the sender address and transfers it to the pool wallet.
|
120
|
+
/// The function will not update balance amounts managed by the framework.
|
121
|
+
/// Only available for externally managed pools.
|
122
|
+
function fundPoolWallet(NftId poolNftId, Amount amount) external;
|
110
123
|
|
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
124
|
|
116
|
-
/// @dev
|
117
|
-
///
|
118
|
-
///
|
119
|
-
|
125
|
+
/// @dev Defund the specified pool wallet with the provided amount.
|
126
|
+
/// This function will transfer the amount from the pool wallet to the sender address.
|
127
|
+
/// The function will not update balance amounts managed by the framework.
|
128
|
+
/// Only available for externally managed pools.
|
129
|
+
function defundPoolWallet(NftId poolNftId, Amount amount) external;
|
130
|
+
|
131
|
+
|
132
|
+
/// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
|
133
|
+
function processSale(NftId bundleNftId, IPolicy.Premium memory premium) external;
|
120
134
|
|
121
135
|
|
122
136
|
/// @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
|
@@ -251,13 +251,13 @@ abstract contract Pool is
|
|
251
251
|
}
|
252
252
|
|
253
253
|
|
254
|
-
/// @dev Sets the maximum
|
254
|
+
/// @dev Sets the maximum balance amound held by this pool.
|
255
255
|
/// Function may only be called by pool owner.
|
256
|
-
function
|
256
|
+
function _setMaxBalanceAmount(Amount maxBalanceAmount)
|
257
257
|
internal
|
258
258
|
virtual
|
259
259
|
{
|
260
|
-
_getPoolStorage()._poolService.
|
260
|
+
_getPoolStorage()._poolService.setMaxBalanceAmount(maxBalanceAmount);
|
261
261
|
}
|
262
262
|
|
263
263
|
/// @dev Sets the required role to create/own bundles.
|
@@ -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";
|
@@ -47,8 +45,8 @@ contract PoolService is
|
|
47
45
|
bytes memory data
|
48
46
|
)
|
49
47
|
internal
|
50
|
-
initializer
|
51
48
|
virtual override
|
49
|
+
onlyInitializing()
|
52
50
|
{
|
53
51
|
(
|
54
52
|
address registryAddress,,
|
@@ -68,24 +66,20 @@ contract PoolService is
|
|
68
66
|
registerInterface(type(IPoolService).interfaceId);
|
69
67
|
}
|
70
68
|
|
71
|
-
|
72
|
-
function
|
69
|
+
/// @inheritdoc IPoolService
|
70
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
73
71
|
external
|
74
72
|
virtual
|
75
73
|
{
|
76
|
-
/*
|
77
74
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
78
75
|
InstanceReader instanceReader = instance.getInstanceReader();
|
76
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
79
77
|
|
80
|
-
|
81
|
-
|
82
|
-
Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
|
83
|
-
|
84
|
-
poolInfo.maxCapitalAmount = maxCapitalAmount;
|
78
|
+
Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
|
79
|
+
poolInfo.maxBalanceAmount = maxBalanceAmount;
|
85
80
|
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
86
81
|
|
87
|
-
emit
|
88
|
-
*/
|
82
|
+
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
89
83
|
}
|
90
84
|
|
91
85
|
function setBundleOwnerRole(RoleId bundleOwnerRole)
|
@@ -122,13 +116,22 @@ contract PoolService is
|
|
122
116
|
returns(NftId bundleNftId, Amount netStakedAmount)
|
123
117
|
{
|
124
118
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
125
|
-
|
119
|
+
|
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
|
+
|
126
130
|
Amount stakingFeeAmount;
|
127
131
|
(stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
|
128
132
|
_getStakingFee(instance.getInstanceReader(), poolNftId),
|
129
133
|
stakingAmount);
|
130
134
|
|
131
|
-
// TODO: (staking amount + existing pool balance) must be be > maxCapitalAmount
|
132
135
|
|
133
136
|
bundleNftId = _bundleService.create(
|
134
137
|
instance,
|
@@ -146,6 +149,7 @@ contract PoolService is
|
|
146
149
|
netStakedAmount,
|
147
150
|
stakingFeeAmount);
|
148
151
|
|
152
|
+
// TODO only collect staking token when pool is not externally managed
|
149
153
|
// pool bookkeeping and collect tokens from bundle owner
|
150
154
|
_collectStakingAmount(
|
151
155
|
instance.getInstanceReader(),
|
@@ -187,24 +191,10 @@ contract PoolService is
|
|
187
191
|
|
188
192
|
if ((unstakedAmount + feeAmount).gtz()){
|
189
193
|
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
// check allowance
|
196
|
-
uint256 tokenAllowance = token.allowance(poolComponentInfo.wallet, address(tokenHandler));
|
197
|
-
if (tokenAllowance < (unstakedAmount.toInt() + feeAmount.toInt())) {
|
198
|
-
revert ErrorPoolServiceWalletAllowanceTooSmall(
|
199
|
-
poolComponentInfo.wallet,
|
200
|
-
address(tokenHandler),
|
201
|
-
tokenAllowance,
|
202
|
-
unstakedAmount.toInt() + feeAmount.toInt());
|
203
|
-
}
|
204
|
-
|
205
|
-
// transfer amount to bundle owner
|
206
|
-
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
207
|
-
tokenHandler.transfer(poolComponentInfo.wallet, bundleOwner, unstakedAmount + feeAmount);
|
194
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
195
|
+
poolComponentInfo.wallet,
|
196
|
+
getRegistry().ownerOf(bundleNftId),
|
197
|
+
unstakedAmount + feeAmount);
|
208
198
|
}
|
209
199
|
}
|
210
200
|
|
@@ -224,15 +214,18 @@ contract PoolService is
|
|
224
214
|
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
225
215
|
}
|
226
216
|
|
227
|
-
|
228
|
-
|
229
|
-
|
217
|
+
{
|
218
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
219
|
+
if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
|
220
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
|
221
|
+
}
|
230
222
|
}
|
231
223
|
|
232
224
|
// calculate fees
|
225
|
+
Amount feeAmount;
|
233
226
|
(
|
234
|
-
|
235
|
-
|
227
|
+
feeAmount,
|
228
|
+
netAmount
|
236
229
|
) = FeeLib.calculateFee(
|
237
230
|
_getStakingFee(instanceReader, poolNftId),
|
238
231
|
amount);
|
@@ -248,13 +241,14 @@ contract PoolService is
|
|
248
241
|
|
249
242
|
// collect tokens from bundle owner
|
250
243
|
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
244
|
+
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
245
|
+
|
246
|
+
// TODO only collect staking token when pool is not externally managed
|
251
247
|
_collectStakingAmount(
|
252
248
|
instanceReader,
|
253
249
|
poolNftId,
|
254
250
|
bundleOwner,
|
255
251
|
amount);
|
256
|
-
|
257
|
-
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
258
252
|
}
|
259
253
|
|
260
254
|
/// @inheritdoc IPoolService
|
@@ -273,10 +267,6 @@ contract PoolService is
|
|
273
267
|
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
274
268
|
}
|
275
269
|
|
276
|
-
if (amount.eqz()) {
|
277
|
-
revert ErrorPoolServiceAmountIsZero();
|
278
|
-
}
|
279
|
-
|
280
270
|
// call bundle service for bookkeeping and additional checks
|
281
271
|
Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
|
282
272
|
|
@@ -294,26 +284,36 @@ contract PoolService is
|
|
294
284
|
|
295
285
|
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
296
286
|
address poolWallet = poolComponentInfo.wallet;
|
297
|
-
|
298
|
-
// check allowance
|
299
|
-
{
|
300
|
-
IERC20Metadata token = IERC20Metadata(poolComponentInfo.token);
|
301
|
-
uint256 tokenAllowance = token.allowance(poolWallet, address(poolComponentInfo.tokenHandler));
|
302
|
-
if (tokenAllowance < unstakedAmount.toInt()) {
|
303
|
-
revert ErrorPoolServiceWalletAllowanceTooSmall(poolWallet, address(poolComponentInfo.tokenHandler), tokenAllowance, amount.toInt());
|
304
|
-
}
|
305
|
-
}
|
306
|
-
|
307
287
|
// transfer amount to bundle owner
|
308
288
|
address owner = getRegistry().ownerOf(bundleNftId);
|
309
|
-
// TODO: centralize token handling (issue #471)
|
310
|
-
poolComponentInfo.tokenHandler.transfer(poolWallet, owner, unstakedAmount);
|
311
|
-
|
312
289
|
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
|
313
|
-
|
290
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
291
|
+
poolWallet,
|
292
|
+
owner,
|
293
|
+
unstakedAmount);
|
314
294
|
return unstakedAmount;
|
315
295
|
}
|
316
296
|
|
297
|
+
|
298
|
+
function fundPoolWallet(NftId poolNftId, Amount amount)
|
299
|
+
external
|
300
|
+
virtual
|
301
|
+
restricted()
|
302
|
+
{
|
303
|
+
// TODO check that poolNftId is externally managed
|
304
|
+
// TODO implement
|
305
|
+
}
|
306
|
+
|
307
|
+
|
308
|
+
function defundPoolWallet(NftId poolNftId, Amount amount)
|
309
|
+
external
|
310
|
+
virtual
|
311
|
+
restricted()
|
312
|
+
{
|
313
|
+
// TODO check that poolNftId is externally managed
|
314
|
+
// TODO implement
|
315
|
+
}
|
316
|
+
|
317
317
|
function processSale(
|
318
318
|
NftId bundleNftId,
|
319
319
|
IPolicy.Premium memory premium
|
@@ -516,7 +516,6 @@ contract PoolService is
|
|
516
516
|
}
|
517
517
|
|
518
518
|
|
519
|
-
// TODO create (I)TreasuryService that deals with all gif related token transfers
|
520
519
|
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
521
520
|
function _collectStakingAmount(
|
522
521
|
InstanceReader instanceReader,
|
@@ -529,23 +528,11 @@ contract PoolService is
|
|
529
528
|
|
530
529
|
// collecting investor token
|
531
530
|
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
532
|
-
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
533
531
|
address poolWallet = componentInfo.wallet;
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
revert ErrorPoolServiceWalletAllowanceTooSmall(bundleOwner, address(tokenHandler), allowance, amount.toInt());
|
539
|
-
}
|
540
|
-
|
541
|
-
// TODO: centralize token handling (issue #471)
|
542
|
-
tokenHandler.transfer(
|
543
|
-
bundleOwner,
|
544
|
-
poolWallet,
|
545
|
-
amount);
|
546
|
-
} else {
|
547
|
-
revert ErrorPoolServiceAmountIsZero();
|
548
|
-
}
|
532
|
+
componentInfo.tokenHandler.collectTokens(
|
533
|
+
bundleOwner,
|
534
|
+
poolWallet,
|
535
|
+
amount);
|
549
536
|
}
|
550
537
|
|
551
538
|
function _getDomain() internal pure override returns(ObjectType) {
|
@@ -38,7 +38,7 @@ contract ApplicationService is
|
|
38
38
|
)
|
39
39
|
internal
|
40
40
|
virtual override
|
41
|
-
|
41
|
+
onlyInitializing()
|
42
42
|
{
|
43
43
|
(
|
44
44
|
address registryAddress,,
|
@@ -128,6 +128,7 @@ contract ApplicationService is
|
|
128
128
|
address applicationOwner,
|
129
129
|
RiskId riskId,
|
130
130
|
Amount sumInsuredAmount,
|
131
|
+
Amount premiumAmount,
|
131
132
|
Seconds lifetime,
|
132
133
|
NftId bundleNftId,
|
133
134
|
ReferralId referralId,
|
@@ -152,13 +153,45 @@ contract ApplicationService is
|
|
152
153
|
applicationNftId = _registerApplication(productNftId, applicationOwner);
|
153
154
|
|
154
155
|
// create policy info for application
|
155
|
-
IPolicy.PolicyInfo memory applicationInfo =
|
156
|
+
IPolicy.PolicyInfo memory applicationInfo = _createApplicationInfo(
|
157
|
+
productNftId,
|
158
|
+
riskId,
|
159
|
+
sumInsuredAmount,
|
160
|
+
premiumAmount,
|
161
|
+
lifetime,
|
162
|
+
bundleNftId,
|
163
|
+
referralId,
|
164
|
+
applicationData);
|
165
|
+
|
166
|
+
// register application with instance
|
167
|
+
instance.getInstanceStore().createApplication(
|
168
|
+
applicationNftId,
|
169
|
+
applicationInfo);
|
170
|
+
|
171
|
+
// TODO: add logging
|
172
|
+
}
|
173
|
+
|
174
|
+
function _createApplicationInfo(
|
175
|
+
NftId productNftId,
|
176
|
+
RiskId riskId,
|
177
|
+
Amount sumInsuredAmount,
|
178
|
+
Amount premiumAmount,
|
179
|
+
Seconds lifetime,
|
180
|
+
NftId bundleNftId,
|
181
|
+
ReferralId referralId,
|
182
|
+
bytes memory applicationData
|
183
|
+
)
|
184
|
+
internal
|
185
|
+
virtual
|
186
|
+
returns (IPolicy.PolicyInfo memory applicationInfo)
|
187
|
+
{
|
188
|
+
return IPolicy.PolicyInfo({
|
156
189
|
productNftId: productNftId,
|
157
190
|
bundleNftId: bundleNftId,
|
158
191
|
referralId: referralId,
|
159
192
|
riskId: riskId,
|
160
193
|
sumInsuredAmount: sumInsuredAmount,
|
161
|
-
premiumAmount:
|
194
|
+
premiumAmount: premiumAmount,
|
162
195
|
premiumPaidAmount: AmountLib.zero(),
|
163
196
|
lifetime: lifetime,
|
164
197
|
applicationData: applicationData,
|
@@ -171,21 +204,8 @@ contract ApplicationService is
|
|
171
204
|
expiredAt: zeroTimestamp(),
|
172
205
|
closedAt: zeroTimestamp()
|
173
206
|
});
|
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
207
|
}
|
187
208
|
|
188
|
-
|
189
209
|
function renew(
|
190
210
|
NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
|
191
211
|
NftId bundleNftId // will likely need a newer bundle for underwriting
|
@@ -194,7 +214,7 @@ contract ApplicationService is
|
|
194
214
|
virtual override
|
195
215
|
returns (NftId applicationNftId)
|
196
216
|
{
|
197
|
-
|
217
|
+
// TODO implement
|
198
218
|
}
|
199
219
|
|
200
220
|
|
@@ -210,7 +230,7 @@ contract ApplicationService is
|
|
210
230
|
external
|
211
231
|
virtual override
|
212
232
|
{
|
213
|
-
|
233
|
+
// TODO implement
|
214
234
|
}
|
215
235
|
|
216
236
|
function revoke(NftId applicationNftId)
|
@@ -32,7 +32,7 @@ contract ClaimService is
|
|
32
32
|
)
|
33
33
|
internal
|
34
34
|
virtual override
|
35
|
-
|
35
|
+
onlyInitializing()
|
36
36
|
{
|
37
37
|
(
|
38
38
|
address registryAddress,,
|
@@ -294,7 +294,7 @@ contract ClaimService is
|
|
294
294
|
(
|
295
295
|
Amount netPayoutAmount,
|
296
296
|
address beneficiary
|
297
|
-
) =
|
297
|
+
) = _calculatePayoutAmount(
|
298
298
|
instanceReader,
|
299
299
|
policyNftId,
|
300
300
|
policyInfo,
|
@@ -303,10 +303,15 @@ contract ClaimService is
|
|
303
303
|
// TODO callback IPolicyHolder
|
304
304
|
|
305
305
|
emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount);
|
306
|
+
|
307
|
+
{
|
308
|
+
NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
|
309
|
+
IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
|
310
|
+
poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
|
311
|
+
}
|
306
312
|
}
|
307
313
|
|
308
|
-
|
309
|
-
function _transferPayoutAmount(
|
314
|
+
function _calculatePayoutAmount(
|
310
315
|
InstanceReader instanceReader,
|
311
316
|
NftId policyNftId,
|
312
317
|
IPolicy.PolicyInfo memory policyInfo,
|
@@ -336,12 +341,6 @@ contract ClaimService is
|
|
336
341
|
// TODO transfer processing fees to product wallet
|
337
342
|
// TODO inform product to update fee book keeping
|
338
343
|
}
|
339
|
-
|
340
|
-
// TODO: centralize token handling (issue #471)
|
341
|
-
poolInfo.tokenHandler.transfer(
|
342
|
-
poolInfo.wallet,
|
343
|
-
beneficiary,
|
344
|
-
netPayoutAmount);
|
345
344
|
}
|
346
345
|
}
|
347
346
|
|
@@ -31,6 +31,7 @@ interface IClaimService is
|
|
31
31
|
error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
|
32
32
|
error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
|
33
33
|
error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
|
34
|
+
error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
|
34
35
|
|
35
36
|
error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint8 openPayouts);
|
36
37
|
error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
|
@@ -20,22 +20,22 @@ interface IPolicyService is IService {
|
|
20
20
|
|
21
21
|
error ErrorPolicyServicePolicyProductMismatch(NftId applicationNftId, NftId expectedProductNftId, NftId actualProductNftId);
|
22
22
|
error ErrorPolicyServicePolicyStateNotApplied(NftId applicationNftId);
|
23
|
-
error
|
23
|
+
error ErrorPolicyServicePolicyStateNotCollateralized(NftId applicationNftId);
|
24
|
+
error ErrorPolicyServicePolicyAlreadyActivated(NftId policyNftId);
|
24
25
|
|
25
|
-
error ErrorPolicyServicePremiumHigherThanExpected(Amount premiumExpectedAmount, Amount premiumToBePaidAmount);
|
26
26
|
error ErrorPolicyServiceBalanceInsufficient(address policyOwner, uint256 premiumAmount, uint256 balance);
|
27
27
|
error ErrorPolicyServiceAllowanceInsufficient(address policyOwner, address tokenHandler, uint256 premiumAmount, uint256 allowance);
|
28
28
|
|
29
|
-
error
|
29
|
+
error ErrorPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
|
30
30
|
error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId, Amount premiumPaidAmount);
|
31
|
-
error
|
32
|
-
error
|
33
|
-
error
|
31
|
+
error ErrorPolicyServicePolicyNotActivated(NftId policyNftId);
|
32
|
+
error ErrorPolicyServicePolicyAlreadyClosed(NftId policyNftId);
|
33
|
+
error ErrorPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
|
34
34
|
error ErrorPolicyServicePremiumNotFullyPaid(NftId policyNftId, Amount premiumAmount, Amount premiumPaidAmount);
|
35
|
-
error
|
36
|
-
error
|
37
|
-
error
|
38
|
-
error
|
35
|
+
error ErrorPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
|
36
|
+
error ErrorPolicyServicePolicyHasNotExpired(NftId policyNftId, Timestamp expiredAt);
|
37
|
+
error ErrorPolicyServicePolicyExpirationTooLate(NftId policyNftId, Timestamp upperLimit, Timestamp expiredAt);
|
38
|
+
error ErrorPolicyServicePolicyExpirationTooEarly(NftId policyNftId, Timestamp lowerLimit, Timestamp expiredAt);
|
39
39
|
|
40
40
|
error ErrorPolicyServicePremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount recalculatedPremiumAmount);
|
41
41
|
error ErrorPolicyServiceTransferredPremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount transferredPremiumAmount);
|
@@ -43,16 +43,16 @@ interface IPolicyService is IService {
|
|
43
43
|
event LogPolicyServicePolicyDeclined(NftId policyNftId);
|
44
44
|
event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp expiredAt);
|
45
45
|
|
46
|
-
/// @dev
|
46
|
+
/// @dev creates the policy from {applicationNftId}.
|
47
|
+
/// After successful completion of the function the policy can be referenced using the application NftId.
|
48
|
+
/// Locks the sum insured amount in the pool.
|
47
49
|
/// sets the policy state to collateralized
|
48
|
-
/// may set the policy state to activated and set the activation date
|
49
50
|
/// optionally collects premiums and activates the policy.
|
50
51
|
/// - premium payment is only attempted if requirePremiumPayment is set to true
|
51
52
|
/// - activation is only done if activateAt is a non-zero timestamp
|
52
|
-
///
|
53
|
-
|
54
|
-
|
55
|
-
NftId policyNftId,
|
53
|
+
/// only the related product may create a policy from an application
|
54
|
+
function createPolicy(
|
55
|
+
NftId applicationNftId,
|
56
56
|
bool requirePremiumPayment,
|
57
57
|
Timestamp activateAt
|
58
58
|
) external;
|
@@ -62,7 +62,7 @@ interface IPolicyService is IService {
|
|
62
62
|
/// only the related product may decline an application
|
63
63
|
function decline(NftId policyNftId) external;
|
64
64
|
|
65
|
-
/// @dev collects the premium token for the specified policy
|
65
|
+
/// @dev collects the premium token for the specified policy (must be in COLLATERALIZED or ACTIVE state)
|
66
66
|
function collectPremium(NftId policyNftId, Timestamp activateAt) external;
|
67
67
|
|
68
68
|
/// @dev activates the specified policy and sets the activation date in the policy metadata
|
@@ -12,7 +12,7 @@ import {Timestamp} from "../type/Timestamp.sol";
|
|
12
12
|
import {UFixed} from "../type/UFixed.sol";
|
13
13
|
import {Fee} from "../type/Fee.sol";
|
14
14
|
|
15
|
-
interface
|
15
|
+
interface IRiskService is IService {
|
16
16
|
|
17
17
|
function createRisk(
|
18
18
|
RiskId riskId,
|