@etherisc/gif-next 0.0.2-c6d46bb-892 → 0.0.2-c778291-689
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 +51 -5
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1489 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +178 -395
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +280 -324
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +130 -72
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +169 -263
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +186 -94
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +77 -78
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +193 -52
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +93 -126
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +583 -326
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +282 -101
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +120 -42
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1230 -365
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
- 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 +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1126 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +765 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1018 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1395 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +399 -213
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +176 -50
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +204 -32
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +180 -366
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +340 -209
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +226 -452
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +399 -430
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +105 -67
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +92 -158
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +111 -37
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1243 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +132 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +129 -55
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +25 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +36 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +217 -73
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +83 -44
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +270 -183
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +15 -57
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +235 -290
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +117 -91
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +188 -220
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +135 -57
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +344 -341
- 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 +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +182 -28
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +206 -124
- 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 +439 -39
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +370 -68
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +99 -35
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -138
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +104 -145
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1252 -203
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +804 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +76 -107
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +12 -16
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +21 -3
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -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/IService.sol/IService.json +20 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +940 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +31 -13
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +21 -7
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +362 -7
- 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 +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1412 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +566 -54
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +387 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1941 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +661 -85
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +97 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +39 -34
- 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 +47 -4
- 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 +149 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +100 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- 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 +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +591 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +217 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/authorization/IAccessAdmin.sol +136 -0
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/authorization/IServiceAuthorization.sol +38 -0
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/authorization/ServiceAuthorization.sol +90 -0
- package/contracts/distribution/BasicDistribution.sol +138 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +162 -152
- package/contracts/distribution/DistributionService.sol +124 -137
- package/contracts/distribution/DistributionServiceManager.sol +11 -23
- package/contracts/distribution/IDistributionComponent.sol +28 -47
- package/contracts/distribution/IDistributionService.sol +24 -10
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +29 -43
- package/contracts/instance/IInstanceService.sol +46 -27
- package/contracts/instance/Instance.sol +116 -116
- package/contracts/instance/InstanceAdmin.sol +285 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +203 -0
- package/contracts/instance/InstanceReader.sol +106 -52
- package/contracts/instance/InstanceService.sol +291 -132
- package/contracts/instance/InstanceServiceManager.sol +12 -26
- package/contracts/instance/InstanceStore.sol +146 -66
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +110 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
- package/contracts/instance/module/IAccess.sol +2 -10
- package/contracts/instance/module/IBundle.sol +1 -4
- package/contracts/instance/module/IComponents.sol +15 -10
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +25 -19
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +33 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +167 -0
- package/contracts/oracle/OracleService.sol +279 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +166 -0
- package/contracts/pool/BasicPoolAuthorization.sol +58 -0
- package/contracts/pool/BundleService.sol +252 -196
- package/contracts/pool/BundleServiceManager.sol +11 -23
- package/contracts/pool/IBundleService.sol +35 -19
- package/contracts/pool/IPoolComponent.sol +10 -66
- package/contracts/pool/IPoolService.sol +79 -33
- package/contracts/pool/Pool.sol +168 -144
- package/contracts/pool/PoolService.sol +322 -216
- package/contracts/pool/PoolServiceManager.sol +11 -23
- package/contracts/product/ApplicationService.sol +143 -80
- package/contracts/product/ApplicationServiceManager.sol +11 -8
- package/contracts/product/BasicProduct.sol +53 -0
- package/contracts/product/BasicProductAuthorization.sol +43 -0
- package/contracts/product/ClaimService.sol +36 -62
- package/contracts/product/ClaimServiceManager.sol +11 -8
- package/contracts/product/IApplicationService.sol +2 -1
- package/contracts/product/IClaimService.sol +8 -1
- package/contracts/product/IPolicyService.sol +29 -36
- package/contracts/product/IPricingService.sol +10 -8
- package/contracts/product/IProductComponent.sol +10 -12
- package/contracts/product/{IProductService.sol → IRiskService.sol} +2 -9
- package/contracts/product/PolicyService.sol +390 -192
- package/contracts/product/PolicyServiceManager.sol +11 -26
- package/contracts/product/PricingService.sol +103 -77
- package/contracts/product/PricingServiceManager.sol +11 -23
- package/contracts/product/Product.sol +156 -128
- package/contracts/product/RiskService.sol +97 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +8 -1
- package/contracts/registry/IRegistry.sol +54 -21
- package/contracts/registry/IRegistryService.sol +38 -35
- package/contracts/registry/Registry.sol +233 -124
- package/contracts/registry/RegistryAdmin.sol +374 -0
- package/contracts/registry/RegistryService.sol +67 -100
- package/contracts/registry/RegistryServiceManager.sol +23 -30
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseRegistry.sol +485 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
- package/contracts/registry/TokenRegistry.sol +261 -62
- package/contracts/shared/Component.sol +141 -144
- package/contracts/shared/ComponentService.sol +587 -96
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/IComponent.sol +21 -41
- package/contracts/shared/IComponentService.sol +108 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
- package/contracts/shared/INftOwnable.sol +1 -1
- package/contracts/shared/IPolicyHolder.sol +6 -1
- package/contracts/shared/IService.sol +9 -2
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +172 -0
- package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
- package/contracts/shared/Lifecycle.sol +77 -0
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +4 -15
- package/contracts/shared/PolicyHolder.sol +22 -17
- package/contracts/shared/Registerable.sol +2 -2
- package/contracts/shared/Service.sol +32 -22
- package/contracts/shared/TokenHandler.sol +112 -8
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +167 -0
- package/contracts/staking/IStakingService.sol +105 -47
- package/contracts/staking/StakeManagerLib.sol +206 -0
- package/contracts/staking/Staking.sol +497 -0
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +50 -0
- package/contracts/staking/StakingReader.sol +183 -0
- package/contracts/staking/StakingService.sol +288 -47
- package/contracts/staking/{StakeingServiceManager.sol → StakingServiceManager.sol} +13 -6
- package/contracts/staking/StakingStore.sol +605 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +29 -3
- package/contracts/type/Blocknumber.sol +26 -3
- package/contracts/type/Fee.sol +17 -16
- package/contracts/type/NftId.sol +14 -16
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +175 -62
- package/contracts/type/Referral.sol +2 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +104 -62
- package/contracts/type/Seconds.sol +40 -1
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +27 -2
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +17 -3
- package/contracts/type/UFixed.sol +34 -9
- package/contracts/type/Version.sol +4 -2
- package/contracts/{shared → upgradeability}/ProxyManager.sol +33 -4
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/package.json +8 -5
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
- 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 -864
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -640
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +0 -628
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
- package/contracts/instance/base/Lifecycle.sol +0 -121
- package/contracts/instance/module/ISetup.sol +0 -33
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/product/ProductService.sol +0 -210
- package/contracts/product/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -216
- package/contracts/registry/ReleaseManager.sol +0 -328
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -1,58 +1,52 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
3
5
|
|
4
6
|
import {IRegistry} from "../registry/IRegistry.sol";
|
5
7
|
import {Product} from "./Product.sol";
|
6
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
7
|
-
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
8
9
|
import {IInstance} from "../instance/IInstance.sol";
|
9
10
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
10
|
-
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
11
|
-
import {IRisk} from "../instance/module/IRisk.sol";
|
12
|
-
import {IBundle} from "../instance/module/IBundle.sol";
|
13
|
-
import {ISetup} from "../instance/module/ISetup.sol";
|
14
11
|
|
15
12
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
16
13
|
|
17
14
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
18
|
-
import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
|
19
15
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
20
|
-
import {
|
21
|
-
import {
|
22
|
-
import {APPLIED, COLLATERALIZED, ACTIVE, KEEP_STATE, CLOSED, DECLINED, CONFIRMED} from "../type/StateId.sol";
|
16
|
+
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
17
|
+
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED} from "../type/StateId.sol";
|
23
18
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
24
|
-
import {
|
19
|
+
import {ReferralId} from "../type/Referral.sol";
|
25
20
|
import {StateId} from "../type/StateId.sol";
|
26
21
|
import {VersionPart} from "../type/Version.sol";
|
27
22
|
|
28
|
-
import {
|
23
|
+
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
29
24
|
import {IApplicationService} from "./IApplicationService.sol";
|
30
25
|
import {IBundleService} from "../pool/IBundleService.sol";
|
31
26
|
import {IClaimService} from "./IClaimService.sol";
|
27
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
32
28
|
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
33
29
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
30
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
34
31
|
import {IPolicyService} from "./IPolicyService.sol";
|
35
32
|
import {IPoolService} from "../pool/IPoolService.sol";
|
36
33
|
import {IPricingService} from "./IPricingService.sol";
|
37
|
-
import {IService} from "../shared/IService.sol";
|
38
|
-
import {Service} from "../shared/Service.sol";
|
39
34
|
|
40
35
|
contract PolicyService is
|
41
|
-
|
36
|
+
ComponentVerifyingService,
|
42
37
|
IPolicyService
|
43
38
|
{
|
44
39
|
using NftIdLib for NftId;
|
45
40
|
using TimestampLib for Timestamp;
|
46
41
|
|
47
42
|
IApplicationService internal _applicationService;
|
43
|
+
IComponentService internal _componentService;
|
48
44
|
IBundleService internal _bundleService;
|
49
45
|
IClaimService internal _claimService;
|
50
46
|
IDistributionService internal _distributionService;
|
51
47
|
IPoolService internal _poolService;
|
52
48
|
IPricingService internal _pricingService;
|
53
49
|
|
54
|
-
event LogProductServiceSender(address sender);
|
55
|
-
|
56
50
|
function _initialize(
|
57
51
|
address owner,
|
58
52
|
bytes memory data
|
@@ -61,17 +55,20 @@ contract PolicyService is
|
|
61
55
|
virtual override
|
62
56
|
initializer
|
63
57
|
{
|
64
|
-
|
65
|
-
|
66
|
-
|
58
|
+
(
|
59
|
+
address registryAddress,,
|
60
|
+
//address managerAddress
|
61
|
+
address authority
|
62
|
+
) = abi.decode(data, (address, address, address));
|
67
63
|
|
68
|
-
initializeService(registryAddress,
|
64
|
+
initializeService(registryAddress, authority, owner);
|
69
65
|
|
70
66
|
VersionPart majorVersion = getVersion().toMajorPart();
|
71
|
-
|
67
|
+
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
72
68
|
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
69
|
+
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
73
70
|
_claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
|
74
|
-
|
71
|
+
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
75
72
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
76
73
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
77
74
|
|
@@ -79,41 +76,56 @@ contract PolicyService is
|
|
79
76
|
}
|
80
77
|
|
81
78
|
|
82
|
-
function getDomain() public pure override returns(ObjectType) {
|
83
|
-
return POLICY();
|
84
|
-
}
|
85
|
-
|
86
|
-
|
87
|
-
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
88
|
-
IRegistry.ObjectInfo memory productInfo;
|
89
|
-
(, productInfo,) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
90
|
-
product = Product(productInfo.objectAddress);
|
91
|
-
}
|
92
|
-
|
93
|
-
|
94
79
|
function decline(
|
95
|
-
NftId policyNftId
|
80
|
+
NftId applicationNftId // = policyNftId
|
96
81
|
)
|
97
82
|
external
|
98
|
-
override
|
83
|
+
virtual override
|
99
84
|
{
|
100
|
-
|
85
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
86
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
87
|
+
|
88
|
+
// check policy is in state applied
|
89
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
90
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
91
|
+
}
|
92
|
+
|
93
|
+
// check policy matches with calling product
|
94
|
+
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
95
|
+
if(applicationInfo.productNftId != productNftId) {
|
96
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
97
|
+
applicationNftId,
|
98
|
+
applicationInfo.productNftId,
|
99
|
+
productNftId);
|
100
|
+
}
|
101
|
+
|
102
|
+
|
103
|
+
// store updated policy info
|
104
|
+
instance.getInstanceStore().updatePolicyState(
|
105
|
+
applicationNftId,
|
106
|
+
DECLINED());
|
107
|
+
|
108
|
+
emit LogPolicyServicePolicyDeclined(applicationNftId);
|
101
109
|
}
|
102
110
|
|
103
111
|
|
104
|
-
/// @
|
105
|
-
function
|
112
|
+
/// @inheritdoc IPolicyService
|
113
|
+
function createPolicy(
|
106
114
|
NftId applicationNftId, // = policyNftId
|
107
|
-
bool requirePremiumPayment,
|
108
115
|
Timestamp activateAt
|
109
116
|
)
|
110
117
|
external
|
111
118
|
virtual override
|
112
119
|
{
|
113
120
|
// check caller is registered product
|
114
|
-
(NftId productNftId,, IInstance instance) =
|
121
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
115
122
|
InstanceReader instanceReader = instance.getInstanceReader();
|
116
123
|
|
124
|
+
// check policy is in state applied
|
125
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
126
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
127
|
+
}
|
128
|
+
|
117
129
|
// check policy matches with calling product
|
118
130
|
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
119
131
|
if(applicationInfo.productNftId != productNftId) {
|
@@ -122,66 +134,61 @@ contract PolicyService is
|
|
122
134
|
applicationInfo.productNftId,
|
123
135
|
productNftId);
|
124
136
|
}
|
125
|
-
|
126
|
-
// check policy is in state applied
|
127
|
-
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
128
|
-
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
129
|
-
}
|
130
137
|
|
131
|
-
|
138
|
+
// actual collateralizaion
|
139
|
+
_poolService.lockCollateral(
|
140
|
+
instance,
|
141
|
+
address(instanceReader.getComponentInfo(productNftId).token),
|
142
|
+
productNftId,
|
143
|
+
applicationNftId,
|
144
|
+
applicationInfo.bundleNftId,
|
145
|
+
applicationInfo.sumInsuredAmount);
|
132
146
|
|
133
147
|
// optional activation of policy
|
134
148
|
if(activateAt > zeroTimestamp()) {
|
135
|
-
|
136
|
-
applicationInfo.activatedAt = activateAt;
|
137
|
-
applicationInfo.expiredAt = activateAt.addSeconds(applicationInfo.lifetime);
|
138
|
-
}
|
139
|
-
|
140
|
-
// lock bundle collateral
|
141
|
-
Amount netPremiumAmount = AmountLib.zero(); // > 0 if immediate premium payment
|
142
|
-
|
143
|
-
// optional collection of premium
|
144
|
-
if(requirePremiumPayment) {
|
145
|
-
netPremiumAmount = _processPremiumByTreasury(
|
146
|
-
instance,
|
149
|
+
applicationInfo = _activate(
|
147
150
|
applicationNftId,
|
148
|
-
applicationInfo
|
149
|
-
|
150
|
-
applicationInfo.premiumPaidAmount = applicationInfo.premiumPaidAmount + applicationInfo.premiumAmount;
|
151
|
+
applicationInfo,
|
152
|
+
activateAt);
|
151
153
|
}
|
152
154
|
|
153
|
-
//
|
154
|
-
instance.getInstanceStore().updatePolicy(
|
155
|
+
// update policy and set state to collateralized
|
156
|
+
instance.getInstanceStore().updatePolicy(
|
157
|
+
applicationNftId,
|
158
|
+
applicationInfo,
|
159
|
+
COLLATERALIZED());
|
155
160
|
|
156
|
-
//
|
157
|
-
|
158
|
-
// eg retention level 30%, payouts up to 30% of the sum insured will be made from the product's pool directly
|
159
|
-
// for the remaining 70% the pool owns a policy that will cover claims that exceed the 30% of the sum insured
|
160
|
-
// might also call pool component (for isVerifyingApplications pools)
|
161
|
-
_poolService.lockCollateral(
|
162
|
-
instance,
|
161
|
+
// calculate and store premium
|
162
|
+
IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
|
163
163
|
productNftId,
|
164
|
-
|
165
|
-
applicationInfo,
|
166
|
-
|
164
|
+
applicationInfo.riskId,
|
165
|
+
applicationInfo.sumInsuredAmount,
|
166
|
+
applicationInfo.lifetime,
|
167
|
+
applicationInfo.applicationData,
|
168
|
+
applicationInfo.bundleNftId,
|
169
|
+
applicationInfo.referralId);
|
170
|
+
|
171
|
+
instance.getInstanceStore().createPremium(
|
172
|
+
applicationNftId,
|
173
|
+
premium);
|
174
|
+
|
175
|
+
// update referral counter
|
176
|
+
{
|
177
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
178
|
+
_distributionService.processReferral(
|
179
|
+
productInfo.distributionNftId,
|
180
|
+
applicationInfo.referralId);
|
181
|
+
}
|
182
|
+
|
183
|
+
// TODO add calling pool contract if it needs to validate application
|
167
184
|
|
168
185
|
// TODO: add logging
|
169
|
-
}
|
170
186
|
|
187
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
188
|
+
}
|
171
189
|
|
172
|
-
function calculateRequiredCollateral(
|
173
|
-
UFixed collateralizationLevel,
|
174
|
-
Amount sumInsuredAmount
|
175
|
-
)
|
176
|
-
public
|
177
|
-
pure
|
178
|
-
virtual
|
179
|
-
returns(Amount collateralAmount)
|
180
|
-
{
|
181
|
-
UFixed collateralUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
|
182
|
-
return AmountLib.toAmount(collateralUFixed.toInt());
|
183
|
-
}
|
184
190
|
|
191
|
+
/// @inheritdoc IPolicyService
|
185
192
|
function collectPremium(
|
186
193
|
NftId policyNftId,
|
187
194
|
Timestamp activateAt
|
@@ -190,187 +197,378 @@ contract PolicyService is
|
|
190
197
|
virtual
|
191
198
|
{
|
192
199
|
// check caller is registered product
|
193
|
-
(
|
200
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
194
201
|
InstanceReader instanceReader = instance.getInstanceReader();
|
202
|
+
StateId stateId = instanceReader.getPolicyState(policyNftId);
|
203
|
+
|
204
|
+
// check policy is in state collateralized or active
|
205
|
+
if (!(stateId == COLLATERALIZED())) {
|
206
|
+
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
207
|
+
}
|
208
|
+
|
195
209
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
196
210
|
|
197
|
-
if
|
211
|
+
// check if premium is already collected
|
212
|
+
if (policyInfo.premiumPaidAmount.gtz()) {
|
198
213
|
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
|
199
214
|
}
|
200
215
|
|
201
|
-
|
216
|
+
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
217
|
+
policyInfo.premiumPaidAmount = premium.premiumAmount;
|
202
218
|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
219
|
+
_processPremium(
|
220
|
+
instance,
|
221
|
+
policyNftId,
|
222
|
+
policyInfo,
|
223
|
+
premium);
|
207
224
|
|
208
|
-
|
225
|
+
// optionally activate policy
|
226
|
+
if(activateAt.gtz()) {
|
227
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
228
|
+
}
|
209
229
|
|
210
|
-
_bundleService.increaseBalance(instance, policyInfo.bundleNftId, netPremiumAmount);
|
211
230
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
212
231
|
|
213
|
-
if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
|
214
|
-
activate(policyNftId, activateAt);
|
215
|
-
}
|
216
|
-
|
217
232
|
// TODO: add logging
|
233
|
+
|
234
|
+
_transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
235
|
+
|
236
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
218
237
|
}
|
219
238
|
|
239
|
+
/// @inheritdoc IPolicyService
|
220
240
|
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
221
241
|
// check caller is registered product
|
222
|
-
(,, IInstance instance) =
|
242
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
223
243
|
InstanceReader instanceReader = instance.getInstanceReader();
|
224
244
|
|
225
245
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
246
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
226
247
|
|
227
|
-
|
228
|
-
policyInfo.activatedAt.eqz(),
|
229
|
-
"ERROR:PRS-020:ALREADY_ACTIVATED");
|
230
|
-
|
231
|
-
policyInfo.activatedAt = activateAt;
|
232
|
-
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
233
|
-
|
234
|
-
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, ACTIVE());
|
248
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
235
249
|
|
236
250
|
// TODO: add logging
|
251
|
+
|
252
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
237
253
|
}
|
238
254
|
|
239
255
|
|
256
|
+
/// @inheritdoc IPolicyService
|
240
257
|
function expire(
|
241
|
-
NftId policyNftId
|
258
|
+
NftId policyNftId,
|
259
|
+
Timestamp expireAt
|
242
260
|
)
|
243
261
|
external
|
244
262
|
override
|
245
|
-
|
263
|
+
virtual
|
264
|
+
returns (Timestamp expiredAt)
|
246
265
|
{
|
247
|
-
|
266
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
267
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
268
|
+
|
269
|
+
// check policy matches with calling product
|
270
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
271
|
+
if(policyInfo.productNftId != productNftId) {
|
272
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
273
|
+
policyNftId,
|
274
|
+
policyInfo.productNftId,
|
275
|
+
productNftId);
|
276
|
+
}
|
277
|
+
|
278
|
+
// check policy is active
|
279
|
+
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
280
|
+
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
281
|
+
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
282
|
+
}
|
283
|
+
|
284
|
+
// set return value to provided timestamp
|
285
|
+
expiredAt = expireAt;
|
286
|
+
|
287
|
+
// update expiredAt to current block timestamp if not set
|
288
|
+
if (expiredAt.eqz()) {
|
289
|
+
expiredAt = TimestampLib.blockTimestamp();
|
290
|
+
}
|
291
|
+
|
292
|
+
// check expiredAt represents a valid expiry time
|
293
|
+
if (expiredAt >= policyInfo.expiredAt) {
|
294
|
+
revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
|
295
|
+
}
|
296
|
+
if (expiredAt < TimestampLib.blockTimestamp()) {
|
297
|
+
revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
|
298
|
+
}
|
299
|
+
|
300
|
+
// update policyInfo with new expiredAt timestamp
|
301
|
+
policyInfo.expiredAt = expiredAt;
|
302
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
303
|
+
|
304
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expiredAt);
|
305
|
+
|
306
|
+
// TODO: add callback IPolicyHolder.policyExpired() if applicable
|
248
307
|
}
|
249
308
|
|
309
|
+
|
250
310
|
function close(
|
251
311
|
NftId policyNftId
|
252
312
|
)
|
253
313
|
external
|
254
314
|
override
|
255
315
|
{
|
256
|
-
(,, IInstance instance) =
|
316
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
257
317
|
InstanceReader instanceReader = instance.getInstanceReader();
|
258
318
|
|
319
|
+
// check that policy has been activated
|
259
320
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
260
|
-
|
261
|
-
if (policyInfo
|
262
|
-
revert
|
321
|
+
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
322
|
+
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
323
|
+
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
263
324
|
}
|
264
325
|
|
265
|
-
|
266
|
-
if (
|
267
|
-
revert
|
326
|
+
// check that policy has not already been closed
|
327
|
+
if (policyInfo.closedAt.gtz()) {
|
328
|
+
revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
|
268
329
|
}
|
269
330
|
|
270
|
-
|
271
|
-
|
331
|
+
// check that policy does not have any open claims
|
332
|
+
if (policyInfo.openClaimsCount > 0) {
|
333
|
+
revert ErrorPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
272
334
|
}
|
273
335
|
|
274
336
|
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
337
|
+
// TODO consider to remove requirement for fully paid premiums altogether
|
275
338
|
if (!(policyInfo.premiumAmount == policyInfo.premiumPaidAmount)) {
|
276
339
|
revert ErrorPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
|
277
340
|
}
|
278
341
|
|
279
|
-
|
280
|
-
revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
281
|
-
}
|
282
|
-
|
283
|
-
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
284
|
-
|
342
|
+
// release (remaining) collateral that was blocked by policy
|
285
343
|
_poolService.releaseCollateral(
|
286
344
|
instance,
|
345
|
+
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
287
346
|
policyNftId,
|
288
347
|
policyInfo);
|
289
348
|
|
349
|
+
// TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
|
350
|
+
|
351
|
+
// update policy state to closed
|
352
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
290
353
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
354
|
+
|
355
|
+
// TODO add logging
|
291
356
|
}
|
292
357
|
|
293
358
|
|
294
|
-
|
359
|
+
/// @dev calculates the premium and updates all counters in the other services
|
360
|
+
function _processPremium(
|
295
361
|
IInstance instance,
|
296
|
-
NftId
|
297
|
-
|
362
|
+
NftId applicationNftId,
|
363
|
+
IPolicy.PolicyInfo memory applicationInfo,
|
364
|
+
IPolicy.PremiumInfo memory premium
|
298
365
|
)
|
299
366
|
internal
|
300
|
-
|
367
|
+
virtual
|
301
368
|
{
|
302
|
-
|
303
|
-
|
304
|
-
|
369
|
+
NftId productNftId = applicationInfo.productNftId;
|
370
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
371
|
+
|
372
|
+
// check if premium balance and allowance of policy holder is sufficient
|
373
|
+
{
|
374
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
375
|
+
address policyHolder = getRegistry().ownerOf(applicationNftId);
|
376
|
+
|
377
|
+
_checkPremiumBalanceAndAllowance(
|
378
|
+
tokenHandler.getToken(),
|
379
|
+
address(tokenHandler),
|
380
|
+
policyHolder,
|
381
|
+
premium.premiumAmount);
|
305
382
|
}
|
306
383
|
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
384
|
+
// update the counters
|
385
|
+
_processSale(
|
386
|
+
instanceReader,
|
387
|
+
instance.getInstanceStore(),
|
388
|
+
productNftId,
|
389
|
+
applicationInfo.bundleNftId,
|
390
|
+
applicationInfo.referralId,
|
391
|
+
premium);
|
392
|
+
}
|
393
|
+
|
394
|
+
function _activate(
|
395
|
+
NftId policyNftId,
|
396
|
+
IPolicy.PolicyInfo memory policyInfo,
|
397
|
+
Timestamp activateAt
|
398
|
+
)
|
399
|
+
internal
|
400
|
+
virtual
|
401
|
+
view
|
402
|
+
returns (IPolicy.PolicyInfo memory)
|
403
|
+
{
|
404
|
+
// fail if policy has already been activated and activateAt is different
|
405
|
+
if(! policyInfo.activatedAt.eqz() && activateAt != policyInfo.activatedAt) {
|
406
|
+
revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
|
324
407
|
}
|
325
408
|
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
if (tokenHandler.getToken().allowance(policyOwner, address(tokenHandler)) < premium.premiumAmount) {
|
330
|
-
revert ErrorIPolicyServiceInsufficientAllowance(policyOwner, address(tokenHandler), premium.premiumAmount);
|
409
|
+
// ignore if policy has already been activated and activateAt is the same
|
410
|
+
if (policyInfo.activatedAt == activateAt) {
|
411
|
+
return policyInfo;
|
331
412
|
}
|
332
413
|
|
333
|
-
|
334
|
-
|
335
|
-
uint256 poolFeeAmountToTransfer = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
336
|
-
uint256 bundleFeeAmountToTransfer = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
337
|
-
Amount poolAmountToTransfer = AmountLib.toAmount(premium.netPremiumAmount + poolFeeAmountToTransfer + bundleFeeAmountToTransfer);
|
414
|
+
policyInfo.activatedAt = activateAt;
|
415
|
+
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
338
416
|
|
339
|
-
|
417
|
+
return policyInfo;
|
418
|
+
}
|
340
419
|
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
420
|
+
/// @dev update counters by calling the involved services
|
421
|
+
function _processSale(
|
422
|
+
InstanceReader instanceReader,
|
423
|
+
InstanceStore instanceStore,
|
424
|
+
NftId productNftId,
|
425
|
+
NftId bundleNftId,
|
426
|
+
ReferralId referralId,
|
427
|
+
IPolicy.PremiumInfo memory premium
|
428
|
+
)
|
429
|
+
internal
|
430
|
+
virtual
|
431
|
+
{
|
432
|
+
(NftId distributionNftId, , , ) = _getDistributionNftAndWallets(
|
433
|
+
instanceReader,
|
434
|
+
productNftId);
|
435
|
+
|
436
|
+
// update product fees, distribution and pool fees
|
437
|
+
_componentService.increaseProductFees(
|
438
|
+
instanceStore,
|
439
|
+
productNftId,
|
440
|
+
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
441
|
+
|
442
|
+
// update distribution fees and distributor commission and pool fees
|
443
|
+
_distributionService.processSale(
|
444
|
+
distributionNftId,
|
445
|
+
referralId,
|
446
|
+
premium);
|
447
|
+
|
448
|
+
// update pool and bundle fees
|
449
|
+
_poolService.processSale(
|
450
|
+
bundleNftId,
|
451
|
+
premium);
|
452
|
+
}
|
346
453
|
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
454
|
+
|
455
|
+
/// @dev transfer the premium to the wallets the premium is distributed to
|
456
|
+
function _transferFunds(
|
457
|
+
InstanceReader instanceReader,
|
458
|
+
NftId policyNftId,
|
459
|
+
NftId productNftId,
|
460
|
+
IPolicy.PremiumInfo memory premium
|
461
|
+
)
|
462
|
+
internal
|
463
|
+
virtual
|
464
|
+
{
|
465
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
466
|
+
address policyHolder = getRegistry().ownerOf(policyNftId);
|
467
|
+
|
468
|
+
(
|
469
|
+
,
|
470
|
+
address distributionWallet,
|
471
|
+
address poolWallet,
|
472
|
+
address productWallet
|
473
|
+
) = _getDistributionNftAndWallets(
|
474
|
+
instanceReader,
|
475
|
+
productNftId);
|
476
|
+
|
477
|
+
tokenHandler.collectTokensToThreeRecipients(
|
478
|
+
policyHolder,
|
479
|
+
productWallet,
|
480
|
+
premium.productFeeAmount,
|
481
|
+
distributionWallet,
|
482
|
+
premium.distributionFeeAndCommissionAmount,
|
483
|
+
poolWallet,
|
484
|
+
premium.poolPremiumAndFeeAmount);
|
485
|
+
}
|
486
|
+
|
487
|
+
|
488
|
+
/// @dev checks that policy has been collateralized and has been activated.
|
489
|
+
/// does not check if policy has been expired or closed.
|
490
|
+
function _policyHasBeenActivated(
|
491
|
+
StateId policyState,
|
492
|
+
IPolicy.PolicyInfo memory policyInfo
|
493
|
+
)
|
494
|
+
internal
|
495
|
+
view
|
496
|
+
returns (bool)
|
497
|
+
{
|
498
|
+
if (policyState != COLLATERALIZED()) { return false; }
|
499
|
+
if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
|
500
|
+
return true;
|
501
|
+
}
|
502
|
+
|
503
|
+
|
504
|
+
/// @dev checks the balance and allowance of the policy holder
|
505
|
+
function _checkPremiumBalanceAndAllowance(
|
506
|
+
IERC20Metadata token,
|
507
|
+
address tokenHandlerAddress,
|
508
|
+
address policyHolder,
|
509
|
+
Amount premiumAmount
|
510
|
+
)
|
511
|
+
internal
|
512
|
+
virtual
|
513
|
+
view
|
514
|
+
{
|
515
|
+
uint256 premium = premiumAmount.toInt();
|
516
|
+
uint256 balance = token.balanceOf(policyHolder);
|
517
|
+
uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
|
518
|
+
|
519
|
+
if (balance < premium) {
|
520
|
+
revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
|
360
521
|
}
|
361
522
|
|
362
|
-
|
363
|
-
|
364
|
-
Amount totalTransferred = distributionFeeAmountToTransfer + poolAmountToTransfer + productFeeAmountToTransfer;
|
365
|
-
|
366
|
-
if (premium.premiumAmount != totalTransferred.toInt()) {
|
367
|
-
revert ErrorPolicyServiceTransferredPremiumMismatch(
|
368
|
-
policyNftId,
|
369
|
-
AmountLib.toAmount(premium.premiumAmount),
|
370
|
-
totalTransferred);
|
371
|
-
}
|
523
|
+
if (allowance < premium) {
|
524
|
+
revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
|
372
525
|
}
|
526
|
+
}
|
373
527
|
|
374
|
-
|
528
|
+
|
529
|
+
function _getTokenHandler(
|
530
|
+
InstanceReader instanceReader,
|
531
|
+
NftId productNftId
|
532
|
+
)
|
533
|
+
internal
|
534
|
+
virtual
|
535
|
+
view
|
536
|
+
returns (
|
537
|
+
TokenHandler tokenHandler
|
538
|
+
)
|
539
|
+
{
|
540
|
+
tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
541
|
+
}
|
542
|
+
|
543
|
+
function _getDistributionNftAndWallets(
|
544
|
+
InstanceReader instanceReader,
|
545
|
+
NftId productNftId
|
546
|
+
)
|
547
|
+
internal
|
548
|
+
virtual
|
549
|
+
view returns (
|
550
|
+
NftId distributionNftId,
|
551
|
+
address distributionWallet,
|
552
|
+
address poolWallet,
|
553
|
+
address productWallet
|
554
|
+
)
|
555
|
+
{
|
556
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
557
|
+
distributionNftId = productInfo.distributionNftId;
|
558
|
+
distributionWallet = instanceReader.getComponentInfo(distributionNftId).wallet;
|
559
|
+
poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).wallet;
|
560
|
+
productWallet = instanceReader.getComponentInfo(productNftId).wallet;
|
561
|
+
}
|
562
|
+
|
563
|
+
|
564
|
+
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
565
|
+
IRegistry.ObjectInfo memory productInfo;
|
566
|
+
(, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
|
567
|
+
product = Product(productInfo.objectAddress);
|
568
|
+
}
|
569
|
+
|
570
|
+
|
571
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
572
|
+
return POLICY();
|
375
573
|
}
|
376
574
|
}
|