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