@etherisc/gif-next 0.0.2-9dd41ff-671 → 0.0.2-9e03baf-990
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 +75 -9
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -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 +414 -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 +1060 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/{shared/AccessManagerCustom.sol/AccessManagerCustom.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +28 -25
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1324 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +219 -596
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +340 -444
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +144 -133
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +226 -309
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +215 -94
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1429 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1430 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -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 +112 -91
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +170 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +127 -238
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1183 -276
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +874 -395
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +255 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +122 -103
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1210 -389
- 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 +223 -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 +21 -0
- 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 +961 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -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 +709 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +877 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +982 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +746 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1254 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +507 -345
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +194 -111
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +275 -46
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +214 -400
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +490 -282
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +224 -621
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +634 -640
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +124 -117
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +132 -282
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +112 -97
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1148 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +333 -299
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +153 -114
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +54 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +196 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +361 -81
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +154 -86
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +365 -221
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +44 -57
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +422 -406
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +128 -137
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +248 -348
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +143 -116
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +364 -475
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -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 +400 -50
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +112 -64
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +840 -107
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1743 -149
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +180 -200
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -86
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -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 +120 -317
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1406 -213
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +834 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +474 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +111 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +114 -130
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1402 -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 +46 -14
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +36 -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 +49 -1
- 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 +799 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -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 +48 -70
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +67 -103
- 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 +54 -119
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +735 -27
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1435 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +573 -53
- 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 +1816 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +780 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +661 -182
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +125 -90
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -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 +121 -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 +28 -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 +19 -19
- 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 +60 -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 +15 -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 +71 -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 +618 -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 +596 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +289 -0
- package/contracts/authorization/IAccess.sol +49 -0
- package/contracts/authorization/IAccessAdmin.sol +137 -0
- package/contracts/authorization/IAuthorization.sol +60 -0
- package/contracts/authorization/IServiceAuthorization.sol +40 -0
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +106 -0
- package/contracts/distribution/BasicDistribution.sol +139 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +156 -156
- package/contracts/distribution/DistributionService.sol +177 -173
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +28 -47
- package/contracts/distribution/IDistributionService.sol +24 -10
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +431 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +28 -39
- package/contracts/instance/IInstanceService.sol +30 -32
- package/contracts/instance/Instance.sol +124 -122
- package/contracts/instance/InstanceAdmin.sol +208 -285
- package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
- package/contracts/instance/InstanceReader.sol +194 -67
- package/contracts/instance/InstanceService.sol +246 -130
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- 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/IAccess.sol +2 -0
- package/contracts/instance/module/IBundle.sol +1 -4
- package/contracts/instance/module/IComponents.sol +22 -13
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +33 -26
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/BasicOracle.sol +47 -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 +66 -0
- package/contracts/oracle/Oracle.sol +156 -0
- package/contracts/oracle/OracleService.sol +292 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +175 -0
- package/contracts/pool/BasicPoolAuthorization.sol +68 -0
- package/contracts/pool/BundleService.sol +314 -213
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +46 -24
- package/contracts/pool/IPoolComponent.sol +23 -75
- package/contracts/pool/IPoolService.sol +105 -47
- package/contracts/pool/Pool.sol +211 -168
- package/contracts/pool/PoolService.sol +448 -232
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +156 -84
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +49 -0
- package/contracts/product/BasicProductAuthorization.sol +42 -0
- package/contracts/product/ClaimService.sol +333 -162
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +2 -1
- package/contracts/product/IClaimService.sol +35 -5
- package/contracts/product/IPolicyService.sol +41 -39
- package/contracts/product/IPricingService.sol +13 -11
- package/contracts/product/IProductComponent.sol +28 -10
- package/contracts/product/{IProductService.sol → IRiskService.sol} +2 -9
- package/contracts/product/PolicyService.sol +521 -204
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +107 -83
- package/contracts/product/PricingServiceManager.sol +5 -8
- package/contracts/product/Product.sol +199 -146
- package/contracts/product/RiskService.sol +96 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +75 -38
- package/contracts/registry/IRegistry.sol +85 -24
- package/contracts/registry/IRegistryService.sol +9 -6
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +439 -179
- package/contracts/registry/RegistryAdmin.sol +396 -77
- package/contracts/registry/RegistryService.sol +73 -64
- package/contracts/registry/RegistryServiceManager.sol +6 -13
- package/contracts/registry/ReleaseLifecycle.sol +30 -0
- package/contracts/registry/ReleaseRegistry.sol +485 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +203 -0
- package/contracts/registry/TokenRegistry.sol +261 -64
- package/contracts/shared/Component.sol +128 -170
- package/contracts/shared/ComponentService.sol +732 -94
- package/contracts/shared/ComponentServiceManager.sol +38 -0
- package/contracts/shared/ComponentVerifyingService.sol +128 -0
- package/contracts/shared/ContractLib.sol +54 -0
- package/contracts/shared/IComponent.sol +24 -47
- package/contracts/shared/IComponentService.sol +130 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
- package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
- package/contracts/shared/INftOwnable.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -17
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/IService.sol +9 -2
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
- package/contracts/shared/InstanceLinkedComponent.sol +205 -0
- package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
- package/contracts/shared/Lifecycle.sol +88 -0
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +32 -22
- package/contracts/shared/PolicyHolder.sol +18 -50
- package/contracts/shared/Registerable.sol +21 -13
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +48 -36
- package/contracts/shared/TokenHandler.sol +375 -13
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +173 -0
- package/contracts/staking/IStakingService.sol +103 -48
- package/contracts/staking/StakeManagerLib.sol +224 -0
- package/contracts/staking/Staking.sol +505 -0
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +52 -0
- package/contracts/staking/StakingReader.sol +190 -0
- package/contracts/staking/StakingService.sol +331 -47
- package/contracts/staking/StakingServiceManager.sol +11 -7
- 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 +44 -3
- package/contracts/type/Blocknumber.sol +26 -3
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +17 -16
- package/contracts/type/NftId.sol +15 -16
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +176 -62
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +2 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +17 -3
- package/contracts/type/RoleId.sol +98 -75
- package/contracts/type/Seconds.sol +48 -1
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +41 -2
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +17 -3
- package/contracts/type/UFixed.sol +38 -9
- package/contracts/type/Version.sol +4 -2
- package/contracts/{shared → upgradeability}/ProxyManager.sol +73 -41
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +11 -7
- 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 -883
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -711
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1018
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- 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 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1765
- 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/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 -1594
- 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 -465
- 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 -125
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -17
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,58 +1,48 @@
|
|
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 {
|
23
|
-
import {
|
24
|
-
import {PayoutId, PayoutIdLib} from "../type/PayoutId.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";
|
18
|
+
import {NftId} from "../type/NftId.sol";
|
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";
|
24
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
29
25
|
import {IApplicationService} from "./IApplicationService.sol";
|
30
26
|
import {IBundleService} from "../pool/IBundleService.sol";
|
31
27
|
import {IClaimService} from "./IClaimService.sol";
|
28
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
32
29
|
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
33
30
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
31
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
32
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
34
33
|
import {IPolicyService} from "./IPolicyService.sol";
|
35
34
|
import {IPoolService} from "../pool/IPoolService.sol";
|
36
35
|
import {IPricingService} from "./IPricingService.sol";
|
37
|
-
import {IService} from "../shared/IService.sol";
|
38
|
-
import {Service} from "../shared/Service.sol";
|
39
36
|
|
40
37
|
contract PolicyService is
|
41
|
-
|
38
|
+
ComponentVerifyingService,
|
42
39
|
IPolicyService
|
43
40
|
{
|
44
|
-
|
45
|
-
using TimestampLib for Timestamp;
|
46
|
-
|
47
|
-
IApplicationService internal _applicationService;
|
48
|
-
IBundleService internal _bundleService;
|
49
|
-
IClaimService internal _claimService;
|
41
|
+
IComponentService internal _componentService;
|
50
42
|
IDistributionService internal _distributionService;
|
51
43
|
IPoolService internal _poolService;
|
52
44
|
IPricingService internal _pricingService;
|
53
45
|
|
54
|
-
event LogProductServiceSender(address sender);
|
55
|
-
|
56
46
|
function _initialize(
|
57
47
|
address owner,
|
58
48
|
bytes memory data
|
@@ -62,60 +52,79 @@ contract PolicyService is
|
|
62
52
|
initializer
|
63
53
|
{
|
64
54
|
(
|
65
|
-
address registryAddress
|
66
|
-
//address managerAddress
|
55
|
+
address registryAddress,
|
67
56
|
address authority
|
68
|
-
) = abi.decode(data, (address, address
|
57
|
+
) = abi.decode(data, (address, address));
|
69
58
|
|
70
|
-
|
59
|
+
_initializeService(registryAddress, authority, owner);
|
71
60
|
|
72
61
|
VersionPart majorVersion = getVersion().toMajorPart();
|
62
|
+
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
73
63
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
74
|
-
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
75
|
-
_claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
|
76
|
-
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
77
64
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
78
65
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
79
66
|
|
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);
|
67
|
+
_registerInterface(type(IPolicyService).interfaceId);
|
93
68
|
}
|
94
69
|
|
95
70
|
|
96
71
|
function decline(
|
97
|
-
NftId policyNftId
|
72
|
+
NftId applicationNftId // = policyNftId
|
98
73
|
)
|
99
74
|
external
|
100
|
-
|
75
|
+
virtual
|
76
|
+
nonReentrant()
|
101
77
|
{
|
102
|
-
|
78
|
+
_checkNftType(applicationNftId, POLICY());
|
79
|
+
|
80
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
81
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
82
|
+
|
83
|
+
// check policy is in state applied
|
84
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
85
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
86
|
+
}
|
87
|
+
|
88
|
+
// check policy matches with calling product
|
89
|
+
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
90
|
+
if(applicationInfo.productNftId != productNftId) {
|
91
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
92
|
+
applicationNftId,
|
93
|
+
applicationInfo.productNftId,
|
94
|
+
productNftId);
|
95
|
+
}
|
96
|
+
|
97
|
+
|
98
|
+
// store updated policy info
|
99
|
+
instance.getInstanceStore().updatePolicyState(
|
100
|
+
applicationNftId,
|
101
|
+
DECLINED());
|
102
|
+
|
103
|
+
emit LogPolicyServicePolicyDeclined(applicationNftId);
|
103
104
|
}
|
104
105
|
|
105
106
|
|
106
|
-
/// @
|
107
|
-
function
|
107
|
+
/// @inheritdoc IPolicyService
|
108
|
+
function createPolicy(
|
108
109
|
NftId applicationNftId, // = policyNftId
|
109
|
-
bool requirePremiumPayment,
|
110
110
|
Timestamp activateAt
|
111
111
|
)
|
112
112
|
external
|
113
|
-
virtual
|
113
|
+
virtual
|
114
|
+
nonReentrant()
|
115
|
+
returns (Amount premiumAmount)
|
114
116
|
{
|
117
|
+
_checkNftType(applicationNftId, POLICY());
|
118
|
+
|
115
119
|
// check caller is registered product
|
116
|
-
(NftId productNftId,, IInstance instance) =
|
120
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
117
121
|
InstanceReader instanceReader = instance.getInstanceReader();
|
118
122
|
|
123
|
+
// check policy is in state applied
|
124
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
125
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
126
|
+
}
|
127
|
+
|
119
128
|
// check policy matches with calling product
|
120
129
|
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
121
130
|
if(applicationInfo.productNftId != productNftId) {
|
@@ -124,255 +133,563 @@ contract PolicyService is
|
|
124
133
|
applicationInfo.productNftId,
|
125
134
|
productNftId);
|
126
135
|
}
|
127
|
-
|
128
|
-
// check policy is in state applied
|
129
|
-
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
130
|
-
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
131
|
-
}
|
132
136
|
|
133
|
-
|
137
|
+
// actual collateralizaion
|
138
|
+
_poolService.lockCollateral(
|
139
|
+
instance,
|
140
|
+
address(instanceReader.getComponentInfo(productNftId).token),
|
141
|
+
productNftId,
|
142
|
+
applicationNftId,
|
143
|
+
applicationInfo.bundleNftId,
|
144
|
+
applicationInfo.sumInsuredAmount);
|
134
145
|
|
135
146
|
// optional activation of policy
|
136
147
|
if(activateAt > zeroTimestamp()) {
|
137
|
-
|
138
|
-
|
139
|
-
|
148
|
+
applicationInfo = _activate(
|
149
|
+
applicationNftId,
|
150
|
+
applicationInfo,
|
151
|
+
activateAt);
|
140
152
|
}
|
141
153
|
|
142
|
-
//
|
143
|
-
|
154
|
+
// update policy and set state to collateralized
|
155
|
+
instance.getInstanceStore().updatePolicy(
|
156
|
+
applicationNftId,
|
157
|
+
applicationInfo,
|
158
|
+
COLLATERALIZED());
|
144
159
|
|
145
|
-
//
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
160
|
+
// calculate and store premium
|
161
|
+
IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
|
162
|
+
productNftId,
|
163
|
+
applicationInfo.riskId,
|
164
|
+
applicationInfo.sumInsuredAmount,
|
165
|
+
applicationInfo.lifetime,
|
166
|
+
applicationInfo.applicationData,
|
167
|
+
applicationInfo.bundleNftId,
|
168
|
+
applicationInfo.referralId);
|
151
169
|
|
152
|
-
|
153
|
-
|
170
|
+
instance.getInstanceStore().createPremium(
|
171
|
+
applicationNftId,
|
172
|
+
premium);
|
154
173
|
|
155
|
-
|
156
|
-
instance.getInstanceStore().updatePolicy(applicationNftId, applicationInfo, newPolicyState);
|
174
|
+
premiumAmount = premium.fullPremiumAmount;
|
157
175
|
|
158
|
-
//
|
159
|
-
|
160
|
-
|
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,
|
165
|
-
productNftId,
|
166
|
-
applicationNftId,
|
167
|
-
applicationInfo,
|
168
|
-
netPremiumAmount); // for pool book keeping (fee + additional capital)
|
176
|
+
// update referral counter
|
177
|
+
{
|
178
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
169
179
|
|
170
|
-
|
171
|
-
|
180
|
+
if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
181
|
+
_distributionService.processReferral(
|
182
|
+
productInfo.distributionNftId,
|
183
|
+
applicationInfo.referralId);
|
184
|
+
}
|
185
|
+
}
|
172
186
|
|
187
|
+
// log policy creation before interactions with token and policy holder
|
188
|
+
emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
|
189
|
+
|
190
|
+
// callback to policy holder if applicable
|
191
|
+
_policyHolderPolicyActivated(applicationNftId, activateAt);
|
192
|
+
}
|
173
193
|
|
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
194
|
|
195
|
+
/// @inheritdoc IPolicyService
|
187
196
|
function collectPremium(
|
188
197
|
NftId policyNftId,
|
189
198
|
Timestamp activateAt
|
190
199
|
)
|
191
200
|
external
|
192
201
|
virtual
|
202
|
+
nonReentrant()
|
193
203
|
{
|
204
|
+
_checkNftType(policyNftId, POLICY());
|
205
|
+
|
194
206
|
// check caller is registered product
|
195
|
-
(
|
207
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
196
208
|
InstanceReader instanceReader = instance.getInstanceReader();
|
197
|
-
|
209
|
+
StateId stateId = instanceReader.getPolicyState(policyNftId);
|
198
210
|
|
199
|
-
|
200
|
-
|
211
|
+
// check policy is in state collateralized or active
|
212
|
+
if (!(stateId == COLLATERALIZED())) {
|
213
|
+
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
201
214
|
}
|
202
215
|
|
203
|
-
|
216
|
+
// check if premium is already collected
|
217
|
+
if (instanceReader.getPremiumInfoState(policyNftId) == PAID()) {
|
218
|
+
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
|
219
|
+
}
|
204
220
|
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
221
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
222
|
+
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
223
|
+
|
224
|
+
_processPremium(
|
225
|
+
instance,
|
226
|
+
policyNftId,
|
227
|
+
policyInfo,
|
228
|
+
premium);
|
209
229
|
|
210
|
-
|
230
|
+
// optionally activate policy
|
231
|
+
if(activateAt.gtz()) {
|
232
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
233
|
+
}
|
211
234
|
|
212
|
-
_bundleService.increaseBalance(instance, policyInfo.bundleNftId, netPremiumAmount);
|
213
235
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
236
|
+
instance.getInstanceStore().updatePremiumState(policyNftId, PAID());
|
214
237
|
|
215
|
-
|
216
|
-
|
217
|
-
}
|
238
|
+
// log premium collection before interactions with token
|
239
|
+
emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
|
218
240
|
|
219
|
-
|
241
|
+
_transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
220
242
|
}
|
221
243
|
|
222
|
-
|
244
|
+
/// @inheritdoc IPolicyService
|
245
|
+
function activate(NftId policyNftId, Timestamp activateAt)
|
246
|
+
external
|
247
|
+
virtual
|
248
|
+
nonReentrant()
|
249
|
+
{
|
250
|
+
_checkNftType(policyNftId, POLICY());
|
251
|
+
|
223
252
|
// check caller is registered product
|
224
|
-
(,, IInstance instance) =
|
253
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
225
254
|
InstanceReader instanceReader = instance.getInstanceReader();
|
226
255
|
|
227
256
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
257
|
+
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
228
258
|
|
229
|
-
|
230
|
-
policyInfo.activatedAt.eqz(),
|
231
|
-
"ERROR:PRS-020:ALREADY_ACTIVATED");
|
232
|
-
|
233
|
-
policyInfo.activatedAt = activateAt;
|
234
|
-
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
259
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
235
260
|
|
236
|
-
|
261
|
+
// log policy activation before interactions with policy holder
|
262
|
+
emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
|
237
263
|
|
238
|
-
//
|
264
|
+
// callback to policy holder if applicable
|
265
|
+
_policyHolderPolicyActivated(policyNftId, activateAt);
|
239
266
|
}
|
240
267
|
|
241
268
|
|
269
|
+
/// @inheritdoc IPolicyService
|
242
270
|
function expire(
|
243
|
-
NftId policyNftId
|
271
|
+
NftId policyNftId,
|
272
|
+
Timestamp expireAt
|
244
273
|
)
|
245
274
|
external
|
246
|
-
|
247
|
-
|
275
|
+
virtual
|
276
|
+
nonReentrant()
|
277
|
+
returns (Timestamp expiredAt)
|
248
278
|
{
|
279
|
+
_checkNftType(policyNftId, POLICY());
|
280
|
+
|
281
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
249
282
|
|
283
|
+
// check policy matches with calling product
|
284
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
285
|
+
if(policyInfo.productNftId != productNftId) {
|
286
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
287
|
+
policyNftId,
|
288
|
+
policyInfo.productNftId,
|
289
|
+
productNftId);
|
290
|
+
}
|
291
|
+
|
292
|
+
return _expire(
|
293
|
+
instance,
|
294
|
+
policyNftId,
|
295
|
+
expireAt
|
296
|
+
);
|
250
297
|
}
|
251
298
|
|
252
|
-
|
253
|
-
|
299
|
+
/// @inheritdoc IPolicyService
|
300
|
+
function expirePolicy(
|
301
|
+
IInstance instance,
|
302
|
+
NftId policyNftId,
|
303
|
+
Timestamp expireAt
|
254
304
|
)
|
255
|
-
external
|
256
|
-
|
305
|
+
external
|
306
|
+
virtual
|
307
|
+
nonReentrant()
|
308
|
+
returns (Timestamp expiredAt)
|
309
|
+
{
|
310
|
+
_checkNftType(policyNftId, POLICY());
|
311
|
+
|
312
|
+
return _expire(
|
313
|
+
instance,
|
314
|
+
policyNftId,
|
315
|
+
expireAt
|
316
|
+
);
|
317
|
+
}
|
318
|
+
|
319
|
+
function _expire(
|
320
|
+
IInstance instance,
|
321
|
+
NftId policyNftId,
|
322
|
+
Timestamp expireAt
|
323
|
+
)
|
324
|
+
internal
|
325
|
+
returns (Timestamp expiredAt)
|
257
326
|
{
|
258
|
-
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
259
327
|
InstanceReader instanceReader = instance.getInstanceReader();
|
328
|
+
|
329
|
+
// check policy is active
|
330
|
+
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
331
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
332
|
+
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
333
|
+
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
334
|
+
}
|
260
335
|
|
261
|
-
|
336
|
+
// set return value to provided timestamp
|
337
|
+
expiredAt = expireAt;
|
262
338
|
|
263
|
-
if
|
264
|
-
|
339
|
+
// update expiredAt to current block timestamp if not set
|
340
|
+
if (expiredAt.eqz()) {
|
341
|
+
expiredAt = TimestampLib.blockTimestamp();
|
265
342
|
}
|
266
343
|
|
267
|
-
|
268
|
-
if (
|
269
|
-
revert
|
344
|
+
// check expiredAt represents a valid expiry time
|
345
|
+
if (expiredAt >= policyInfo.expiredAt) {
|
346
|
+
revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
|
347
|
+
}
|
348
|
+
if (expiredAt < TimestampLib.blockTimestamp()) {
|
349
|
+
revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
|
270
350
|
}
|
271
351
|
|
272
|
-
|
273
|
-
|
352
|
+
// update policyInfo with new expiredAt timestamp
|
353
|
+
Timestamp originalExpiredAt = policyInfo.expiredAt;
|
354
|
+
policyInfo.expiredAt = expiredAt;
|
355
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
356
|
+
|
357
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
|
358
|
+
|
359
|
+
// callback to policy holder if applicable
|
360
|
+
_policyHolderPolicyExpired(policyNftId, expiredAt);
|
361
|
+
}
|
362
|
+
|
363
|
+
|
364
|
+
function close(
|
365
|
+
NftId policyNftId
|
366
|
+
)
|
367
|
+
external
|
368
|
+
virtual
|
369
|
+
nonReentrant()
|
370
|
+
{
|
371
|
+
_checkNftType(policyNftId, POLICY());
|
372
|
+
|
373
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
374
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
375
|
+
|
376
|
+
// check that policy has been activated
|
377
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
378
|
+
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
379
|
+
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
380
|
+
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
274
381
|
}
|
275
382
|
|
276
|
-
//
|
277
|
-
if (
|
278
|
-
revert
|
383
|
+
// check that policy has not already been closed
|
384
|
+
if (policyInfo.closedAt.gtz()) {
|
385
|
+
revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
|
279
386
|
}
|
280
387
|
|
388
|
+
// check that policy does not have any open claims
|
281
389
|
if (policyInfo.openClaimsCount > 0) {
|
282
|
-
revert
|
390
|
+
revert ErrorPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
283
391
|
}
|
284
392
|
|
285
|
-
|
393
|
+
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
394
|
+
// TODO consider to remove requirement for fully paid premiums altogether
|
395
|
+
if (! instanceReader.getPremiumInfoState(policyNftId).eq(PAID())) {
|
396
|
+
revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
|
397
|
+
}
|
286
398
|
|
399
|
+
// release (remaining) collateral that was blocked by policy
|
287
400
|
_poolService.releaseCollateral(
|
288
401
|
instance,
|
402
|
+
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
289
403
|
policyNftId,
|
290
404
|
policyInfo);
|
291
405
|
|
406
|
+
// TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
|
407
|
+
|
408
|
+
// update policy state to closed
|
409
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
292
410
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
411
|
+
|
412
|
+
emit LogPolicyServicePolicyClosed(policyNftId);
|
293
413
|
}
|
294
414
|
|
295
415
|
|
296
|
-
|
416
|
+
/// @dev calculates the premium and updates all counters in the other services
|
417
|
+
function _processPremium(
|
297
418
|
IInstance instance,
|
419
|
+
NftId applicationNftId,
|
420
|
+
IPolicy.PolicyInfo memory applicationInfo,
|
421
|
+
IPolicy.PremiumInfo memory premium
|
422
|
+
)
|
423
|
+
internal
|
424
|
+
virtual
|
425
|
+
{
|
426
|
+
NftId productNftId = applicationInfo.productNftId;
|
427
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
428
|
+
|
429
|
+
// check if premium balance and allowance of policy holder is sufficient
|
430
|
+
{
|
431
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
432
|
+
address policyHolder = getRegistry().ownerOf(applicationNftId);
|
433
|
+
|
434
|
+
_checkPremiumBalanceAndAllowance(
|
435
|
+
tokenHandler.TOKEN(),
|
436
|
+
address(tokenHandler),
|
437
|
+
policyHolder,
|
438
|
+
premium.premiumAmount);
|
439
|
+
}
|
440
|
+
|
441
|
+
// update the counters
|
442
|
+
_processSale(
|
443
|
+
instanceReader,
|
444
|
+
instance.getInstanceStore(),
|
445
|
+
productNftId,
|
446
|
+
applicationInfo.bundleNftId,
|
447
|
+
applicationInfo.referralId,
|
448
|
+
premium);
|
449
|
+
}
|
450
|
+
|
451
|
+
function _activate(
|
452
|
+
NftId policyNftId,
|
453
|
+
IPolicy.PolicyInfo memory policyInfo,
|
454
|
+
Timestamp activateAt
|
455
|
+
)
|
456
|
+
internal
|
457
|
+
virtual
|
458
|
+
view
|
459
|
+
returns (IPolicy.PolicyInfo memory)
|
460
|
+
{
|
461
|
+
// fail if policy has already been activated and activateAt is different
|
462
|
+
if(! policyInfo.activatedAt.eqz() && activateAt != policyInfo.activatedAt) {
|
463
|
+
revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
|
464
|
+
}
|
465
|
+
|
466
|
+
// ignore if policy has already been activated and activateAt is the same
|
467
|
+
if (policyInfo.activatedAt == activateAt) {
|
468
|
+
return policyInfo;
|
469
|
+
}
|
470
|
+
|
471
|
+
policyInfo.activatedAt = activateAt;
|
472
|
+
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
473
|
+
|
474
|
+
return policyInfo;
|
475
|
+
}
|
476
|
+
|
477
|
+
/// @dev update counters by calling the involved services
|
478
|
+
function _processSale(
|
479
|
+
InstanceReader instanceReader,
|
480
|
+
InstanceStore instanceStore,
|
481
|
+
NftId productNftId,
|
482
|
+
NftId bundleNftId,
|
483
|
+
ReferralId referralId,
|
484
|
+
IPolicy.PremiumInfo memory premium
|
485
|
+
)
|
486
|
+
internal
|
487
|
+
virtual
|
488
|
+
{
|
489
|
+
(NftId distributionNftId, , , ) = _getDistributionNftAndWallets(
|
490
|
+
instanceReader,
|
491
|
+
productNftId);
|
492
|
+
|
493
|
+
// update product fees, distribution and pool fees
|
494
|
+
_componentService.increaseProductFees(
|
495
|
+
instanceStore,
|
496
|
+
productNftId,
|
497
|
+
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
498
|
+
|
499
|
+
// update distribution fees and distributor commission and pool fees
|
500
|
+
if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
501
|
+
_distributionService.processSale(
|
502
|
+
distributionNftId,
|
503
|
+
referralId,
|
504
|
+
premium);
|
505
|
+
}
|
506
|
+
|
507
|
+
// update pool and bundle fees
|
508
|
+
_poolService.processSale(
|
509
|
+
bundleNftId,
|
510
|
+
premium);
|
511
|
+
}
|
512
|
+
|
513
|
+
|
514
|
+
/// @dev transfer the premium to the wallets the premium is distributed to
|
515
|
+
function _transferFunds(
|
516
|
+
InstanceReader instanceReader,
|
298
517
|
NftId policyNftId,
|
299
|
-
|
518
|
+
NftId productNftId,
|
519
|
+
IPolicy.PremiumInfo memory premium
|
520
|
+
)
|
521
|
+
internal
|
522
|
+
virtual
|
523
|
+
{
|
524
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
525
|
+
address policyHolder = getRegistry().ownerOf(policyNftId);
|
526
|
+
|
527
|
+
(
|
528
|
+
,
|
529
|
+
address distributionWallet,
|
530
|
+
address poolWallet,
|
531
|
+
address productWallet
|
532
|
+
) = _getDistributionNftAndWallets(
|
533
|
+
instanceReader,
|
534
|
+
productNftId);
|
535
|
+
|
536
|
+
tokenHandler.collectTokensToThreeRecipients(
|
537
|
+
policyHolder,
|
538
|
+
productWallet,
|
539
|
+
premium.productFeeAmount,
|
540
|
+
distributionWallet,
|
541
|
+
premium.distributionFeeAndCommissionAmount,
|
542
|
+
poolWallet,
|
543
|
+
premium.poolPremiumAndFeeAmount);
|
544
|
+
}
|
545
|
+
|
546
|
+
|
547
|
+
/// @dev checks that policy has been collateralized and has been activated.
|
548
|
+
/// does not check if policy has been expired or closed.
|
549
|
+
function _policyHasBeenActivated(
|
550
|
+
StateId policyState,
|
551
|
+
IPolicy.PolicyInfo memory policyInfo
|
552
|
+
)
|
553
|
+
internal
|
554
|
+
view
|
555
|
+
returns (bool)
|
556
|
+
{
|
557
|
+
if (policyState != COLLATERALIZED()) { return false; }
|
558
|
+
if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
|
559
|
+
return true;
|
560
|
+
}
|
561
|
+
|
562
|
+
|
563
|
+
/// @dev checks the balance and allowance of the policy holder
|
564
|
+
function _checkPremiumBalanceAndAllowance(
|
565
|
+
IERC20Metadata token,
|
566
|
+
address tokenHandlerAddress,
|
567
|
+
address policyHolder,
|
568
|
+
Amount premiumAmount
|
300
569
|
)
|
301
570
|
internal
|
302
|
-
|
571
|
+
virtual
|
572
|
+
view
|
303
573
|
{
|
304
|
-
|
305
|
-
|
306
|
-
|
574
|
+
uint256 premium = premiumAmount.toInt();
|
575
|
+
uint256 balance = token.balanceOf(policyHolder);
|
576
|
+
uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
|
577
|
+
|
578
|
+
if (balance < premium) {
|
579
|
+
revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
|
307
580
|
}
|
308
581
|
|
309
|
-
|
310
|
-
|
311
|
-
IPolicy.Premium memory premium = _pricingService.calculatePremium(
|
312
|
-
productNftId,
|
313
|
-
policyInfo.riskId,
|
314
|
-
policyInfo.sumInsuredAmount,
|
315
|
-
policyInfo.lifetime,
|
316
|
-
policyInfo.applicationData,
|
317
|
-
policyInfo.bundleNftId,
|
318
|
-
policyInfo.referralId
|
319
|
-
);
|
320
|
-
|
321
|
-
if (premium.premiumAmount != premiumExpectedAmount.toInt()) {
|
322
|
-
revert ErrorPolicyServicePremiumMismatch(
|
323
|
-
policyNftId,
|
324
|
-
premiumExpectedAmount,
|
325
|
-
AmountLib.toAmount(premium.premiumAmount));
|
582
|
+
if (allowance < premium) {
|
583
|
+
revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
|
326
584
|
}
|
585
|
+
}
|
586
|
+
|
327
587
|
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
588
|
+
function _policyHolderPolicyActivated(
|
589
|
+
NftId policyNftId,
|
590
|
+
Timestamp activateAt
|
591
|
+
)
|
592
|
+
internal
|
593
|
+
virtual
|
594
|
+
{
|
595
|
+
// immediately return if policy is not activated
|
596
|
+
if (activateAt.eqz()) {
|
597
|
+
return;
|
333
598
|
}
|
334
599
|
|
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);
|
600
|
+
// get policy holder address
|
601
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
340
602
|
|
341
|
-
|
603
|
+
// execute callback if policy holder implements IPolicyHolder
|
604
|
+
if (address(policyHolder) != address(0)) {
|
605
|
+
policyHolder.policyActivated(policyNftId, activateAt);
|
606
|
+
}
|
607
|
+
}
|
342
608
|
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
609
|
+
|
610
|
+
function _policyHolderPolicyExpired(
|
611
|
+
NftId policyNftId,
|
612
|
+
Timestamp expiredAt
|
613
|
+
)
|
614
|
+
internal
|
615
|
+
virtual
|
616
|
+
{
|
617
|
+
// immediately return if policy is not activated
|
618
|
+
if (expiredAt.eqz()) {
|
619
|
+
return;
|
347
620
|
}
|
348
621
|
|
349
|
-
//
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
622
|
+
// get policy holder address
|
623
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
624
|
+
|
625
|
+
// execute callback if policy holder implements IPolicyHolder
|
626
|
+
if (address(policyHolder) != address(0)) {
|
627
|
+
policyHolder.policyExpired(policyNftId, expiredAt);
|
355
628
|
}
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
629
|
+
}
|
630
|
+
|
631
|
+
|
632
|
+
function _getPolicyHolder(NftId policyNftId)
|
633
|
+
internal
|
634
|
+
view
|
635
|
+
returns (IPolicyHolder policyHolder)
|
636
|
+
{
|
637
|
+
address policyHolderAddress = getRegistry().ownerOf(policyNftId);
|
638
|
+
policyHolder = IPolicyHolder(policyHolderAddress);
|
639
|
+
|
640
|
+
if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
|
641
|
+
policyHolder = IPolicyHolder(address(0));
|
362
642
|
}
|
643
|
+
}
|
363
644
|
|
364
|
-
// validate total amount transferred
|
365
|
-
{
|
366
|
-
Amount totalTransferred = distributionFeeAmountToTransfer + poolAmountToTransfer + productFeeAmountToTransfer;
|
367
645
|
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
646
|
+
function _getTokenHandler(
|
647
|
+
InstanceReader instanceReader,
|
648
|
+
NftId productNftId
|
649
|
+
)
|
650
|
+
internal
|
651
|
+
virtual
|
652
|
+
view
|
653
|
+
returns (
|
654
|
+
TokenHandler tokenHandler
|
655
|
+
)
|
656
|
+
{
|
657
|
+
tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
658
|
+
}
|
659
|
+
|
660
|
+
|
661
|
+
function _getDistributionNftAndWallets(
|
662
|
+
InstanceReader instanceReader,
|
663
|
+
NftId productNftId
|
664
|
+
)
|
665
|
+
internal
|
666
|
+
virtual
|
667
|
+
view returns (
|
668
|
+
NftId distributionNftId,
|
669
|
+
address distributionWallet,
|
670
|
+
address poolWallet,
|
671
|
+
address productWallet
|
672
|
+
)
|
673
|
+
{
|
674
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
675
|
+
productWallet = instanceReader.getComponentInfo(productNftId).tokenHandler.getWallet();
|
676
|
+
poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).tokenHandler.getWallet();
|
677
|
+
|
678
|
+
if (productInfo.hasDistribution) {
|
679
|
+
distributionNftId = productInfo.distributionNftId;
|
680
|
+
distributionWallet = instanceReader.getComponentInfo(distributionNftId).tokenHandler.getWallet();
|
374
681
|
}
|
682
|
+
}
|
683
|
+
|
375
684
|
|
376
|
-
|
685
|
+
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
686
|
+
IRegistry.ObjectInfo memory productInfo;
|
687
|
+
(, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
|
688
|
+
product = Product(productInfo.objectAddress);
|
689
|
+
}
|
690
|
+
|
691
|
+
|
692
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
693
|
+
return POLICY();
|
377
694
|
}
|
378
695
|
}
|