@etherisc/gif-next 0.0.2-e964d24-516 → 0.0.2-e987ccf-894
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 +1500 -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 +179 -385
- 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 +171 -254
- 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 +590 -328
- 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 +1294 -370
- 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 +4 -0
- package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
- 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 +1137 -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 +776 -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 +1029 -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 +1406 -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 +181 -356
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +342 -211
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +227 -442
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +401 -432
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +106 -68
- 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 +1254 -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 +142 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +130 -56
- 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 +46 -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 +271 -173
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -55
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +244 -286
- 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 +345 -331
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +47 -203
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +94 -32
- 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 +183 -29
- 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 +440 -40
- 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 +711 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
- 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 +951 -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 -136
- 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 +26 -17
- package/contracts/instance/IInstanceService.sol +46 -27
- package/contracts/instance/Instance.sol +114 -89
- 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 +28 -0
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +110 -0
- package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
- 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 +29 -22
- 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 +166 -0
- package/contracts/oracle/OracleService.sol +278 -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 +144 -81
- package/contracts/product/ApplicationServiceManager.sol +11 -8
- package/contracts/product/BasicProduct.sol +52 -0
- package/contracts/product/BasicProductAuthorization.sol +43 -0
- package/contracts/product/ClaimService.sol +45 -66
- package/contracts/product/ClaimServiceManager.sol +11 -8
- package/contracts/product/IApplicationService.sol +2 -1
- package/contracts/product/IClaimService.sol +13 -3
- 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 +2 -8
- package/contracts/product/PolicyService.sol +390 -190
- 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 +154 -123
- package/contracts/product/ProductService.sol +36 -147
- package/contracts/product/ProductServiceManager.sol +11 -26
- package/contracts/registry/ChainNft.sol +8 -1
- package/contracts/registry/IRegistry.sol +55 -22
- package/contracts/registry/IRegistryService.sol +38 -35
- package/contracts/registry/Registry.sol +234 -125
- 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 +56 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
- 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/shared/KeyValueStore.sol +131 -0
- package/contracts/shared/Lifecycle.sol +77 -0
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +5 -16
- 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 +176 -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 +117 -40
- 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/Cloneable.sol/Cloneable.dbg.json +0 -4
- 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/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
- 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 -532
- 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/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/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/Cloneable.sol +0 -51
- package/contracts/instance/InstanceAccessManager.sol +0 -541
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
- package/contracts/instance/base/KeyValueStore.sol +0 -149
- package/contracts/instance/base/Lifecycle.sol +0 -120
- package/contracts/instance/module/ISetup.sol +0 -33
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/registry/RegistryAccessManager.sol +0 -216
- package/contracts/registry/ReleaseManager.sol +0 -324
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -1,50 +1,46 @@
|
|
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;
|
@@ -61,17 +57,20 @@ contract PolicyService is
|
|
61
57
|
virtual override
|
62
58
|
initializer
|
63
59
|
{
|
64
|
-
|
65
|
-
|
66
|
-
|
60
|
+
(
|
61
|
+
address registryAddress,,
|
62
|
+
//address managerAddress
|
63
|
+
address authority
|
64
|
+
) = abi.decode(data, (address, address, address));
|
67
65
|
|
68
|
-
initializeService(registryAddress,
|
66
|
+
initializeService(registryAddress, authority, owner);
|
69
67
|
|
70
68
|
VersionPart majorVersion = getVersion().toMajorPart();
|
71
|
-
|
69
|
+
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
72
70
|
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
71
|
+
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
73
72
|
_claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
|
74
|
-
|
73
|
+
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
75
74
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
76
75
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
77
76
|
|
@@ -79,41 +78,56 @@ contract PolicyService is
|
|
79
78
|
}
|
80
79
|
|
81
80
|
|
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
81
|
function decline(
|
95
|
-
NftId policyNftId
|
82
|
+
NftId applicationNftId // = policyNftId
|
96
83
|
)
|
97
84
|
external
|
98
|
-
override
|
85
|
+
virtual override
|
99
86
|
{
|
100
|
-
|
87
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
88
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
89
|
+
|
90
|
+
// check policy is in state applied
|
91
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
92
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
93
|
+
}
|
94
|
+
|
95
|
+
// check policy matches with calling product
|
96
|
+
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
97
|
+
if(applicationInfo.productNftId != productNftId) {
|
98
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
99
|
+
applicationNftId,
|
100
|
+
applicationInfo.productNftId,
|
101
|
+
productNftId);
|
102
|
+
}
|
103
|
+
|
104
|
+
|
105
|
+
// store updated policy info
|
106
|
+
instance.getInstanceStore().updatePolicyState(
|
107
|
+
applicationNftId,
|
108
|
+
DECLINED());
|
109
|
+
|
110
|
+
emit LogPolicyServicePolicyDeclined(applicationNftId);
|
101
111
|
}
|
102
112
|
|
103
113
|
|
104
|
-
/// @
|
105
|
-
function
|
114
|
+
/// @inheritdoc IPolicyService
|
115
|
+
function createPolicy(
|
106
116
|
NftId applicationNftId, // = policyNftId
|
107
|
-
bool requirePremiumPayment,
|
108
117
|
Timestamp activateAt
|
109
118
|
)
|
110
119
|
external
|
111
120
|
virtual override
|
112
121
|
{
|
113
122
|
// check caller is registered product
|
114
|
-
(NftId productNftId,, IInstance instance) =
|
123
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
115
124
|
InstanceReader instanceReader = instance.getInstanceReader();
|
116
125
|
|
126
|
+
// check policy is in state applied
|
127
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
128
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
129
|
+
}
|
130
|
+
|
117
131
|
// check policy matches with calling product
|
118
132
|
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
119
133
|
if(applicationInfo.productNftId != productNftId) {
|
@@ -122,66 +136,61 @@ contract PolicyService is
|
|
122
136
|
applicationInfo.productNftId,
|
123
137
|
productNftId);
|
124
138
|
}
|
125
|
-
|
126
|
-
// check policy is in state applied
|
127
|
-
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
128
|
-
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
129
|
-
}
|
130
139
|
|
131
|
-
|
140
|
+
// actual collateralizaion
|
141
|
+
_poolService.lockCollateral(
|
142
|
+
instance,
|
143
|
+
address(instanceReader.getComponentInfo(productNftId).token),
|
144
|
+
productNftId,
|
145
|
+
applicationNftId,
|
146
|
+
applicationInfo.bundleNftId,
|
147
|
+
applicationInfo.sumInsuredAmount);
|
132
148
|
|
133
149
|
// optional activation of policy
|
134
150
|
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,
|
151
|
+
applicationInfo = _activate(
|
147
152
|
applicationNftId,
|
148
|
-
applicationInfo
|
149
|
-
|
150
|
-
applicationInfo.premiumPaidAmount = applicationInfo.premiumPaidAmount + applicationInfo.premiumAmount;
|
153
|
+
applicationInfo,
|
154
|
+
activateAt);
|
151
155
|
}
|
152
156
|
|
153
|
-
//
|
154
|
-
instance.getInstanceStore().updatePolicy(
|
157
|
+
// update policy and set state to collateralized
|
158
|
+
instance.getInstanceStore().updatePolicy(
|
159
|
+
applicationNftId,
|
160
|
+
applicationInfo,
|
161
|
+
COLLATERALIZED());
|
155
162
|
|
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,
|
163
|
+
// calculate and store premium
|
164
|
+
IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
|
163
165
|
productNftId,
|
164
|
-
|
165
|
-
applicationInfo,
|
166
|
-
|
166
|
+
applicationInfo.riskId,
|
167
|
+
applicationInfo.sumInsuredAmount,
|
168
|
+
applicationInfo.lifetime,
|
169
|
+
applicationInfo.applicationData,
|
170
|
+
applicationInfo.bundleNftId,
|
171
|
+
applicationInfo.referralId);
|
172
|
+
|
173
|
+
instance.getInstanceStore().createPremium(
|
174
|
+
applicationNftId,
|
175
|
+
premium);
|
176
|
+
|
177
|
+
// update referral counter
|
178
|
+
{
|
179
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
180
|
+
_distributionService.processReferral(
|
181
|
+
productInfo.distributionNftId,
|
182
|
+
applicationInfo.referralId);
|
183
|
+
}
|
184
|
+
|
185
|
+
// TODO add calling pool contract if it needs to validate application
|
167
186
|
|
168
187
|
// TODO: add logging
|
169
|
-
}
|
170
188
|
|
189
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
190
|
+
}
|
171
191
|
|
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
192
|
|
193
|
+
/// @inheritdoc IPolicyService
|
185
194
|
function collectPremium(
|
186
195
|
NftId policyNftId,
|
187
196
|
Timestamp activateAt
|
@@ -190,187 +199,378 @@ contract PolicyService is
|
|
190
199
|
virtual
|
191
200
|
{
|
192
201
|
// check caller is registered product
|
193
|
-
(
|
202
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
194
203
|
InstanceReader instanceReader = instance.getInstanceReader();
|
204
|
+
StateId stateId = instanceReader.getPolicyState(policyNftId);
|
205
|
+
|
206
|
+
// check policy is in state collateralized or active
|
207
|
+
if (!(stateId == COLLATERALIZED())) {
|
208
|
+
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
209
|
+
}
|
210
|
+
|
195
211
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
196
212
|
|
197
|
-
if
|
213
|
+
// check if premium is already collected
|
214
|
+
if (policyInfo.premiumPaidAmount.gtz()) {
|
198
215
|
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
|
199
216
|
}
|
200
217
|
|
201
|
-
|
218
|
+
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
219
|
+
policyInfo.premiumPaidAmount = premium.premiumAmount;
|
202
220
|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
221
|
+
_processPremium(
|
222
|
+
instance,
|
223
|
+
policyNftId,
|
224
|
+
policyInfo,
|
225
|
+
premium);
|
207
226
|
|
208
|
-
|
227
|
+
// optionally activate policy
|
228
|
+
if(activateAt.gtz()) {
|
229
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
230
|
+
}
|
209
231
|
|
210
|
-
_bundleService.increaseBalance(instance, policyInfo.bundleNftId, netPremiumAmount);
|
211
232
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
212
233
|
|
213
|
-
if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
|
214
|
-
activate(policyNftId, activateAt);
|
215
|
-
}
|
216
|
-
|
217
234
|
// TODO: add logging
|
235
|
+
|
236
|
+
_transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
237
|
+
|
238
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
218
239
|
}
|
219
240
|
|
241
|
+
/// @inheritdoc IPolicyService
|
220
242
|
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
221
243
|
// check caller is registered product
|
222
|
-
(,, IInstance instance) =
|
244
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
223
245
|
InstanceReader instanceReader = instance.getInstanceReader();
|
224
246
|
|
225
247
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
248
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
226
249
|
|
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());
|
250
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
235
251
|
|
236
252
|
// TODO: add logging
|
253
|
+
|
254
|
+
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
237
255
|
}
|
238
256
|
|
239
257
|
|
258
|
+
/// @inheritdoc IPolicyService
|
240
259
|
function expire(
|
241
|
-
NftId policyNftId
|
260
|
+
NftId policyNftId,
|
261
|
+
Timestamp expireAt
|
242
262
|
)
|
243
263
|
external
|
244
264
|
override
|
245
|
-
|
265
|
+
virtual
|
266
|
+
returns (Timestamp expiredAt)
|
246
267
|
{
|
247
|
-
|
268
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
269
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
270
|
+
|
271
|
+
// check policy matches with calling product
|
272
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
273
|
+
if(policyInfo.productNftId != productNftId) {
|
274
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
275
|
+
policyNftId,
|
276
|
+
policyInfo.productNftId,
|
277
|
+
productNftId);
|
278
|
+
}
|
279
|
+
|
280
|
+
// check policy is active
|
281
|
+
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
282
|
+
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
283
|
+
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
284
|
+
}
|
285
|
+
|
286
|
+
// set return value to provided timestamp
|
287
|
+
expiredAt = expireAt;
|
288
|
+
|
289
|
+
// update expiredAt to current block timestamp if not set
|
290
|
+
if (expiredAt.eqz()) {
|
291
|
+
expiredAt = TimestampLib.blockTimestamp();
|
292
|
+
}
|
293
|
+
|
294
|
+
// check expiredAt represents a valid expiry time
|
295
|
+
if (expiredAt >= policyInfo.expiredAt) {
|
296
|
+
revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
|
297
|
+
}
|
298
|
+
if (expiredAt < TimestampLib.blockTimestamp()) {
|
299
|
+
revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
|
300
|
+
}
|
301
|
+
|
302
|
+
// update policyInfo with new expiredAt timestamp
|
303
|
+
policyInfo.expiredAt = expiredAt;
|
304
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
305
|
+
|
306
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expiredAt);
|
307
|
+
|
308
|
+
// TODO: add callback IPolicyHolder.policyExpired() if applicable
|
248
309
|
}
|
249
310
|
|
311
|
+
|
250
312
|
function close(
|
251
313
|
NftId policyNftId
|
252
314
|
)
|
253
315
|
external
|
254
316
|
override
|
255
317
|
{
|
256
|
-
(,, IInstance instance) =
|
318
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
257
319
|
InstanceReader instanceReader = instance.getInstanceReader();
|
258
320
|
|
321
|
+
// check that policy has been activated
|
259
322
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
260
|
-
|
261
|
-
if (policyInfo
|
262
|
-
revert
|
323
|
+
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
324
|
+
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
325
|
+
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
263
326
|
}
|
264
327
|
|
265
|
-
|
266
|
-
if (
|
267
|
-
revert
|
328
|
+
// check that policy has not already been closed
|
329
|
+
if (policyInfo.closedAt.gtz()) {
|
330
|
+
revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
|
268
331
|
}
|
269
332
|
|
270
|
-
|
271
|
-
|
333
|
+
// check that policy does not have any open claims
|
334
|
+
if (policyInfo.openClaimsCount > 0) {
|
335
|
+
revert ErrorPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
272
336
|
}
|
273
337
|
|
274
338
|
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
339
|
+
// TODO consider to remove requirement for fully paid premiums altogether
|
275
340
|
if (!(policyInfo.premiumAmount == policyInfo.premiumPaidAmount)) {
|
276
341
|
revert ErrorPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
|
277
342
|
}
|
278
343
|
|
279
|
-
|
280
|
-
revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
281
|
-
}
|
282
|
-
|
283
|
-
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
284
|
-
|
344
|
+
// release (remaining) collateral that was blocked by policy
|
285
345
|
_poolService.releaseCollateral(
|
286
346
|
instance,
|
347
|
+
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
287
348
|
policyNftId,
|
288
349
|
policyInfo);
|
289
350
|
|
351
|
+
// TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
|
352
|
+
|
353
|
+
// update policy state to closed
|
354
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
290
355
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
356
|
+
|
357
|
+
// TODO add logging
|
291
358
|
}
|
292
359
|
|
293
360
|
|
294
|
-
|
361
|
+
/// @dev calculates the premium and updates all counters in the other services
|
362
|
+
function _processPremium(
|
295
363
|
IInstance instance,
|
296
|
-
NftId
|
297
|
-
|
364
|
+
NftId applicationNftId,
|
365
|
+
IPolicy.PolicyInfo memory applicationInfo,
|
366
|
+
IPolicy.PremiumInfo memory premium
|
298
367
|
)
|
299
368
|
internal
|
300
|
-
|
369
|
+
virtual
|
301
370
|
{
|
302
|
-
|
303
|
-
|
304
|
-
|
371
|
+
NftId productNftId = applicationInfo.productNftId;
|
372
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
373
|
+
|
374
|
+
// check if premium balance and allowance of policy holder is sufficient
|
375
|
+
{
|
376
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
377
|
+
address policyHolder = getRegistry().ownerOf(applicationNftId);
|
378
|
+
|
379
|
+
_checkPremiumBalanceAndAllowance(
|
380
|
+
tokenHandler.getToken(),
|
381
|
+
address(tokenHandler),
|
382
|
+
policyHolder,
|
383
|
+
premium.premiumAmount);
|
305
384
|
}
|
306
385
|
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
386
|
+
// update the counters
|
387
|
+
_processSale(
|
388
|
+
instanceReader,
|
389
|
+
instance.getInstanceStore(),
|
390
|
+
productNftId,
|
391
|
+
applicationInfo.bundleNftId,
|
392
|
+
applicationInfo.referralId,
|
393
|
+
premium);
|
394
|
+
}
|
395
|
+
|
396
|
+
function _activate(
|
397
|
+
NftId policyNftId,
|
398
|
+
IPolicy.PolicyInfo memory policyInfo,
|
399
|
+
Timestamp activateAt
|
400
|
+
)
|
401
|
+
internal
|
402
|
+
virtual
|
403
|
+
view
|
404
|
+
returns (IPolicy.PolicyInfo memory)
|
405
|
+
{
|
406
|
+
// fail if policy has already been activated and activateAt is different
|
407
|
+
if(! policyInfo.activatedAt.eqz() && activateAt != policyInfo.activatedAt) {
|
408
|
+
revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
|
324
409
|
}
|
325
410
|
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
if (tokenHandler.getToken().allowance(policyOwner, address(tokenHandler)) < premium.premiumAmount) {
|
330
|
-
revert ErrorIPolicyServiceInsufficientAllowance(policyOwner, address(tokenHandler), premium.premiumAmount);
|
411
|
+
// ignore if policy has already been activated and activateAt is the same
|
412
|
+
if (policyInfo.activatedAt == activateAt) {
|
413
|
+
return policyInfo;
|
331
414
|
}
|
332
415
|
|
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);
|
416
|
+
policyInfo.activatedAt = activateAt;
|
417
|
+
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
338
418
|
|
339
|
-
|
419
|
+
return policyInfo;
|
420
|
+
}
|
340
421
|
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
422
|
+
/// @dev update counters by calling the involved services
|
423
|
+
function _processSale(
|
424
|
+
InstanceReader instanceReader,
|
425
|
+
InstanceStore instanceStore,
|
426
|
+
NftId productNftId,
|
427
|
+
NftId bundleNftId,
|
428
|
+
ReferralId referralId,
|
429
|
+
IPolicy.PremiumInfo memory premium
|
430
|
+
)
|
431
|
+
internal
|
432
|
+
virtual
|
433
|
+
{
|
434
|
+
(NftId distributionNftId, , , ) = _getDistributionNftAndWallets(
|
435
|
+
instanceReader,
|
436
|
+
productNftId);
|
437
|
+
|
438
|
+
// update product fees, distribution and pool fees
|
439
|
+
_componentService.increaseProductFees(
|
440
|
+
instanceStore,
|
441
|
+
productNftId,
|
442
|
+
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
443
|
+
|
444
|
+
// update distribution fees and distributor commission and pool fees
|
445
|
+
_distributionService.processSale(
|
446
|
+
distributionNftId,
|
447
|
+
referralId,
|
448
|
+
premium);
|
449
|
+
|
450
|
+
// update pool and bundle fees
|
451
|
+
_poolService.processSale(
|
452
|
+
bundleNftId,
|
453
|
+
premium);
|
454
|
+
}
|
346
455
|
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
456
|
+
|
457
|
+
/// @dev transfer the premium to the wallets the premium is distributed to
|
458
|
+
function _transferFunds(
|
459
|
+
InstanceReader instanceReader,
|
460
|
+
NftId policyNftId,
|
461
|
+
NftId productNftId,
|
462
|
+
IPolicy.PremiumInfo memory premium
|
463
|
+
)
|
464
|
+
internal
|
465
|
+
virtual
|
466
|
+
{
|
467
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
468
|
+
address policyHolder = getRegistry().ownerOf(policyNftId);
|
469
|
+
|
470
|
+
(
|
471
|
+
,
|
472
|
+
address distributionWallet,
|
473
|
+
address poolWallet,
|
474
|
+
address productWallet
|
475
|
+
) = _getDistributionNftAndWallets(
|
476
|
+
instanceReader,
|
477
|
+
productNftId);
|
478
|
+
|
479
|
+
tokenHandler.collectTokensToThreeRecipients(
|
480
|
+
policyHolder,
|
481
|
+
productWallet,
|
482
|
+
premium.productFeeAmount,
|
483
|
+
distributionWallet,
|
484
|
+
premium.distributionFeeAndCommissionAmount,
|
485
|
+
poolWallet,
|
486
|
+
premium.poolPremiumAndFeeAmount);
|
487
|
+
}
|
488
|
+
|
489
|
+
|
490
|
+
/// @dev checks that policy has been collateralized and has been activated.
|
491
|
+
/// does not check if policy has been expired or closed.
|
492
|
+
function _policyHasBeenActivated(
|
493
|
+
StateId policyState,
|
494
|
+
IPolicy.PolicyInfo memory policyInfo
|
495
|
+
)
|
496
|
+
internal
|
497
|
+
view
|
498
|
+
returns (bool)
|
499
|
+
{
|
500
|
+
if (policyState != COLLATERALIZED()) { return false; }
|
501
|
+
if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
|
502
|
+
return true;
|
503
|
+
}
|
504
|
+
|
505
|
+
|
506
|
+
/// @dev checks the balance and allowance of the policy holder
|
507
|
+
function _checkPremiumBalanceAndAllowance(
|
508
|
+
IERC20Metadata token,
|
509
|
+
address tokenHandlerAddress,
|
510
|
+
address policyHolder,
|
511
|
+
Amount premiumAmount
|
512
|
+
)
|
513
|
+
internal
|
514
|
+
virtual
|
515
|
+
view
|
516
|
+
{
|
517
|
+
uint256 premium = premiumAmount.toInt();
|
518
|
+
uint256 balance = token.balanceOf(policyHolder);
|
519
|
+
uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
|
520
|
+
|
521
|
+
if (balance < premium) {
|
522
|
+
revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
|
360
523
|
}
|
361
524
|
|
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
|
-
}
|
525
|
+
if (allowance < premium) {
|
526
|
+
revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
|
372
527
|
}
|
528
|
+
}
|
373
529
|
|
374
|
-
|
530
|
+
|
531
|
+
function _getTokenHandler(
|
532
|
+
InstanceReader instanceReader,
|
533
|
+
NftId productNftId
|
534
|
+
)
|
535
|
+
internal
|
536
|
+
virtual
|
537
|
+
view
|
538
|
+
returns (
|
539
|
+
TokenHandler tokenHandler
|
540
|
+
)
|
541
|
+
{
|
542
|
+
tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
543
|
+
}
|
544
|
+
|
545
|
+
function _getDistributionNftAndWallets(
|
546
|
+
InstanceReader instanceReader,
|
547
|
+
NftId productNftId
|
548
|
+
)
|
549
|
+
internal
|
550
|
+
virtual
|
551
|
+
view returns (
|
552
|
+
NftId distributionNftId,
|
553
|
+
address distributionWallet,
|
554
|
+
address poolWallet,
|
555
|
+
address productWallet
|
556
|
+
)
|
557
|
+
{
|
558
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
559
|
+
distributionNftId = productInfo.distributionNftId;
|
560
|
+
distributionWallet = instanceReader.getComponentInfo(distributionNftId).wallet;
|
561
|
+
poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).wallet;
|
562
|
+
productWallet = instanceReader.getComponentInfo(productNftId).wallet;
|
563
|
+
}
|
564
|
+
|
565
|
+
|
566
|
+
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
567
|
+
IRegistry.ObjectInfo memory productInfo;
|
568
|
+
(, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
|
569
|
+
product = Product(productInfo.objectAddress);
|
570
|
+
}
|
571
|
+
|
572
|
+
|
573
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
574
|
+
return POLICY();
|
375
575
|
}
|
376
576
|
}
|