@etherisc/gif-next 0.0.2-f08528a-758 → 0.0.2-f0ccf08-591
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 +113 -10
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1023 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → accounting/IAccountingService.sol/IAccountingService.json} +365 -113
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +680 -264
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +549 -209
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +198 -478
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +120 -381
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +587 -316
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +205 -119
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +123 -194
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +347 -90
- 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 +1461 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2018 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -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 +1404 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1628 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2405 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +546 -71
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +292 -59
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +556 -173
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1042 -314
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +370 -69
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1685 -774
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +305 -229
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +106 -106
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +921 -728
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +48 -7
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -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 +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +133 -350
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +117 -136
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +109 -318
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +169 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +140 -98
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +175 -421
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +387 -228
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +183 -105
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +212 -35
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +139 -212
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +460 -308
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +129 -392
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +538 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +705 -552
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +189 -107
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +188 -180
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +122 -100
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +276 -435
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +431 -234
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +158 -124
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +136 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +157 -83
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +260 -229
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +88 -8
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +465 -307
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +155 -109
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +226 -335
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +128 -138
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +268 -427
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -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 +378 -30
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +72 -152
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- 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 +604 -87
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +801 -395
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +104 -90
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +48 -7
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +67 -277
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +538 -538
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +153 -121
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +80 -100
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +499 -252
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +106 -136
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
- 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 +55 -2
- 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 +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +98 -318
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- 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 +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
- 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 +57 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -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 +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +196 -143
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +155 -23
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +292 -393
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +48 -7
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +142 -103
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +41 -73
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +224 -171
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +121 -95
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +213 -153
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +95 -49
- 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 +63 -10
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -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 +98 -37
- 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/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -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 +33 -31
- 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 +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- 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 +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +109 -35
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -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 +142 -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/accounting/AccountingService.sol +261 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +458 -266
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +159 -203
- package/contracts/authorization/IAccess.sol +25 -6
- package/contracts/authorization/IAccessAdmin.sol +87 -79
- package/contracts/authorization/IAuthorization.sol +9 -36
- package/contracts/authorization/IServiceAuthorization.sol +57 -17
- package/contracts/authorization/ServiceAuthorization.sol +254 -24
- package/contracts/distribution/BasicDistribution.sol +20 -28
- package/contracts/distribution/BasicDistributionAuthorization.sol +34 -10
- package/contracts/distribution/Distribution.sol +43 -81
- package/contracts/distribution/DistributionService.sol +260 -129
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +11 -14
- package/contracts/distribution/IDistributionService.sol +50 -26
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +433 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +130 -0
- package/contracts/instance/IInstance.sol +105 -46
- package/contracts/instance/IInstanceService.sol +55 -34
- package/contracts/instance/Instance.sol +189 -98
- package/contracts/instance/InstanceAdmin.sol +276 -159
- package/contracts/instance/InstanceAuthorizationV3.sol +127 -64
- package/contracts/instance/InstanceReader.sol +478 -251
- package/contracts/instance/InstanceService.sol +299 -231
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +24 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/BalanceStore.sol +3 -5
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +11 -4
- package/contracts/instance/base/ObjectSet.sol +77 -0
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +30 -20
- package/contracts/instance/module/IDistribution.sol +21 -9
- package/contracts/instance/module/IPolicy.sol +50 -29
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +1 -4
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +21 -24
- package/contracts/oracle/OracleService.sol +117 -85
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +37 -28
- package/contracts/pool/BasicPoolAuthorization.sol +42 -9
- package/contracts/pool/BundleService.sol +209 -109
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +31 -22
- package/contracts/pool/IPoolComponent.sol +20 -10
- package/contracts/pool/IPoolService.sol +90 -75
- package/contracts/pool/Pool.sol +145 -113
- package/contracts/pool/PoolLib.sol +353 -0
- package/contracts/pool/PoolService.sol +391 -256
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +127 -81
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +12 -45
- package/contracts/product/BasicProductAuthorization.sol +31 -10
- package/contracts/product/ClaimService.sol +368 -179
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +9 -2
- package/contracts/product/IClaimService.sol +44 -8
- package/contracts/product/IPolicyService.sol +53 -36
- package/contracts/product/IPricingService.sol +11 -10
- package/contracts/product/IProductComponent.sol +28 -5
- package/contracts/product/{IProductService.sol → IRiskService.sol} +8 -8
- package/contracts/product/PolicyService.sol +436 -271
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +75 -65
- package/contracts/product/PricingServiceManager.sol +6 -9
- package/contracts/product/Product.sol +168 -93
- package/contracts/product/RiskService.sol +154 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +78 -29
- package/contracts/registry/IRegistryService.sol +3 -10
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +368 -216
- package/contracts/registry/RegistryAdmin.sol +112 -289
- package/contracts/registry/RegistryAuthorization.sol +277 -0
- package/contracts/registry/RegistryService.sol +41 -66
- package/contracts/registry/RegistryServiceManager.sol +5 -5
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +520 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +201 -57
- package/contracts/registry/TokenRegistry.sol +14 -15
- package/contracts/shared/Component.sol +65 -136
- package/contracts/shared/ComponentService.sol +440 -343
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ContractLib.sol +311 -0
- package/contracts/shared/IComponent.sol +5 -17
- package/contracts/shared/IComponentService.sol +49 -41
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -27
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +22 -1
- package/contracts/shared/IService.sol +4 -6
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
- package/contracts/shared/InstanceLinkedComponent.sol +80 -37
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +31 -11
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +22 -38
- package/contracts/shared/TokenHandler.sol +310 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +26 -15
- package/contracts/staking/IStakingService.sol +31 -9
- package/contracts/staking/Staking.sol +122 -90
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +95 -45
- package/contracts/staking/StakingManager.sol +10 -12
- package/contracts/staking/StakingReader.sol +26 -33
- package/contracts/staking/StakingService.sol +93 -37
- package/contracts/staking/StakingServiceManager.sol +8 -7
- package/contracts/staking/StakingStore.sol +14 -23
- package/contracts/staking/TargetManagerLib.sol +8 -4
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +7 -0
- package/contracts/type/ObjectType.sol +76 -44
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +61 -55
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +10 -5
- package/contracts/type/UFixed.sol +56 -126
- package/contracts/type/Version.sol +57 -6
- package/contracts/{shared → upgradeability}/ProxyManager.sol +84 -49
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +8 -4
- package/contracts/{shared → upgradeability}/Versionable.sol +6 -3
- package/package.json +7 -6
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -181
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -460
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/BundleManager.sol +0 -126
- package/contracts/instance/base/ObjectManager.sol +0 -79
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/ProductService.sol +0 -124
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -487
- package/contracts/shared/ComponentVerifyingService.sol +0 -117
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,61 +1,47 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {Product} from "./Product.sol";
|
6
|
-
import {IComponents} from "../instance/module/IComponents.sol";
|
7
|
-
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
8
|
-
import {IInstance} from "../instance/IInstance.sol";
|
9
|
-
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";
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
13
5
|
|
14
|
-
import {
|
15
|
-
|
16
|
-
import {Amount, AmountLib} from "../type/Amount.sol";
|
17
|
-
import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
|
18
|
-
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
19
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
20
|
-
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
21
|
-
import {APPLIED, COLLATERALIZED, ACTIVE, KEEP_STATE, CLOSED, DECLINED, CONFIRMED} from "../type/StateId.sol";
|
22
|
-
import {NftId, NftIdLib} from "../type/NftId.sol";
|
23
|
-
import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
24
|
-
import {ReferralId} from "../type/Referral.sol";
|
25
|
-
import {StateId} from "../type/StateId.sol";
|
26
|
-
import {VersionPart} from "../type/Version.sol";
|
27
|
-
|
28
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
29
|
-
import {IApplicationService} from "./IApplicationService.sol";
|
30
|
-
import {IBundleService} from "../pool/IBundleService.sol";
|
31
|
-
import {IClaimService} from "./IClaimService.sol";
|
6
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
32
7
|
import {IComponentService} from "../shared/IComponentService.sol";
|
8
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
33
9
|
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
34
10
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
35
11
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
12
|
+
import {IInstance} from "../instance/IInstance.sol";
|
13
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
14
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
36
15
|
import {IPolicyService} from "./IPolicyService.sol";
|
37
16
|
import {IPoolService} from "../pool/IPoolService.sol";
|
38
17
|
import {IPricingService} from "./IPricingService.sol";
|
39
|
-
import {
|
18
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
19
|
+
|
20
|
+
import {Amount} from "../type/Amount.sol";
|
21
|
+
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
|
22
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
23
|
+
import {NftId} from "../type/NftId.sol";
|
24
|
+
import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, PRICE} from "../type/ObjectType.sol";
|
25
|
+
import {PolicyServiceLib} from "./PolicyServiceLib.sol";
|
26
|
+
import {ReferralId} from "../type/Referral.sol";
|
27
|
+
import {RiskId} from "../type/RiskId.sol";
|
40
28
|
import {Service} from "../shared/Service.sol";
|
29
|
+
import {StateId} from "../type/StateId.sol";
|
30
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
31
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
32
|
+
import {VersionPart} from "../type/Version.sol";
|
33
|
+
|
41
34
|
|
42
35
|
contract PolicyService is
|
43
|
-
|
36
|
+
Service,
|
44
37
|
IPolicyService
|
45
38
|
{
|
46
|
-
|
47
|
-
using TimestampLib for Timestamp;
|
48
|
-
|
49
|
-
IApplicationService internal _applicationService;
|
39
|
+
IAccountingService private _accountingService;
|
50
40
|
IComponentService internal _componentService;
|
51
|
-
IBundleService internal _bundleService;
|
52
|
-
IClaimService internal _claimService;
|
53
41
|
IDistributionService internal _distributionService;
|
54
42
|
IPoolService internal _poolService;
|
55
43
|
IPricingService internal _pricingService;
|
56
44
|
|
57
|
-
event LogProductServiceSender(address sender);
|
58
|
-
|
59
45
|
function _initialize(
|
60
46
|
address owner,
|
61
47
|
bytes memory data
|
@@ -65,344 +51,454 @@ contract PolicyService is
|
|
65
51
|
initializer
|
66
52
|
{
|
67
53
|
(
|
68
|
-
address
|
69
|
-
|
70
|
-
|
71
|
-
) = abi.decode(data, (address, address, address));
|
54
|
+
address authority,
|
55
|
+
address registry
|
56
|
+
) = abi.decode(data, (address, address));
|
72
57
|
|
73
|
-
|
58
|
+
__Service_init(authority, registry, owner);
|
74
59
|
|
75
60
|
VersionPart majorVersion = getVersion().toMajorPart();
|
76
|
-
|
77
|
-
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
61
|
+
_accountingService = IAccountingService(getRegistry().getServiceAddress(ACCOUNTING(), majorVersion));
|
78
62
|
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
79
|
-
_claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
|
80
63
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
81
64
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
82
65
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
83
66
|
|
84
|
-
|
85
|
-
}
|
86
|
-
|
87
|
-
|
88
|
-
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
89
|
-
IRegistry.ObjectInfo memory productInfo;
|
90
|
-
(, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
|
91
|
-
product = Product(productInfo.objectAddress);
|
67
|
+
_registerInterface(type(IPolicyService).interfaceId);
|
92
68
|
}
|
93
69
|
|
94
70
|
|
95
71
|
function decline(
|
96
|
-
NftId policyNftId
|
72
|
+
NftId applicationNftId // = policyNftId
|
97
73
|
)
|
98
74
|
external
|
99
|
-
|
75
|
+
virtual
|
76
|
+
restricted()
|
77
|
+
nonReentrant()
|
100
78
|
{
|
101
|
-
|
79
|
+
// checks
|
80
|
+
(IInstance instance,,) = _getAndVerifyCallerForPolicy(applicationNftId);
|
81
|
+
|
82
|
+
// check policy is in state applied
|
83
|
+
if (instance.getInstanceReader().getPolicyState(applicationNftId) != APPLIED()) {
|
84
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
85
|
+
}
|
86
|
+
|
87
|
+
// effects
|
88
|
+
// store updated policy info
|
89
|
+
instance.getInstanceStore().updatePolicyState(
|
90
|
+
applicationNftId,
|
91
|
+
DECLINED());
|
92
|
+
|
93
|
+
emit LogPolicyServicePolicyDeclined(applicationNftId);
|
102
94
|
}
|
103
95
|
|
104
|
-
event LogDebug(uint idx, string message);
|
105
96
|
|
106
|
-
/// @
|
107
|
-
function
|
97
|
+
/// @inheritdoc IPolicyService
|
98
|
+
function createPolicy(
|
108
99
|
NftId applicationNftId, // = policyNftId
|
109
|
-
bool requirePremiumPayment,
|
110
100
|
Timestamp activateAt
|
111
101
|
)
|
112
102
|
external
|
113
|
-
virtual
|
103
|
+
virtual
|
104
|
+
restricted()
|
105
|
+
nonReentrant()
|
106
|
+
returns (Amount premiumAmount)
|
114
107
|
{
|
115
|
-
//
|
116
|
-
(
|
117
|
-
|
108
|
+
// checks
|
109
|
+
(
|
110
|
+
IInstance instance,
|
111
|
+
NftId productNftId,
|
112
|
+
IPolicy.PolicyInfo memory applicationInfo
|
113
|
+
) = _getAndVerifyCallerForPolicy(applicationNftId);
|
118
114
|
|
119
115
|
// check policy is in state applied
|
116
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
120
117
|
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
121
118
|
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
122
119
|
}
|
123
120
|
|
124
|
-
//
|
125
|
-
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
126
|
-
if(applicationInfo.productNftId != productNftId) {
|
127
|
-
revert ErrorPolicyServicePolicyProductMismatch(
|
128
|
-
applicationNftId,
|
129
|
-
applicationInfo.productNftId,
|
130
|
-
productNftId);
|
131
|
-
}
|
132
|
-
|
133
|
-
StateId newPolicyState = COLLATERALIZED();
|
134
|
-
|
121
|
+
// effects
|
135
122
|
// actual collateralizaion
|
136
|
-
(
|
137
|
-
Amount localCollateralAmount,
|
138
|
-
Amount totalCollateralAmount
|
139
|
-
) = _poolService.lockCollateral(
|
123
|
+
_poolService.lockCollateral(
|
140
124
|
instance,
|
141
|
-
address(instanceReader.
|
125
|
+
address(instanceReader.getToken(productNftId)),
|
142
126
|
productNftId,
|
143
127
|
applicationNftId,
|
144
128
|
applicationInfo.bundleNftId,
|
145
129
|
applicationInfo.sumInsuredAmount);
|
146
130
|
|
147
131
|
// optional activation of policy
|
148
|
-
if(activateAt
|
149
|
-
|
150
|
-
applicationInfo.activatedAt = activateAt;
|
151
|
-
applicationInfo.expiredAt = activateAt.addSeconds(applicationInfo.lifetime);
|
132
|
+
if(activateAt.gtz()) {
|
133
|
+
applicationInfo = PolicyServiceLib.activate(applicationNftId, applicationInfo, activateAt);
|
152
134
|
}
|
153
135
|
|
154
|
-
//
|
155
|
-
if(requirePremiumPayment) {
|
156
|
-
Amount premiumPaidAmount = _calculateAndCollectPremium(
|
157
|
-
instance,
|
158
|
-
applicationNftId,
|
159
|
-
applicationInfo);
|
160
|
-
|
161
|
-
applicationInfo.premiumPaidAmount = premiumPaidAmount;
|
162
|
-
}
|
163
|
-
|
164
|
-
// store updated policy info
|
136
|
+
// update policy and set state to collateralized
|
165
137
|
instance.getInstanceStore().updatePolicy(
|
166
138
|
applicationNftId,
|
167
139
|
applicationInfo,
|
168
|
-
|
140
|
+
COLLATERALIZED());
|
141
|
+
|
142
|
+
// calculate and store premium
|
143
|
+
RiskId riskId = applicationInfo.riskId;
|
144
|
+
NftId bundleNftId = applicationInfo.bundleNftId;
|
145
|
+
|
146
|
+
IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
|
147
|
+
productNftId,
|
148
|
+
riskId,
|
149
|
+
applicationInfo.sumInsuredAmount,
|
150
|
+
applicationInfo.lifetime,
|
151
|
+
applicationInfo.applicationData,
|
152
|
+
bundleNftId,
|
153
|
+
applicationInfo.referralId);
|
154
|
+
|
155
|
+
premiumAmount = premium.fullPremiumAmount;
|
156
|
+
instance.getInstanceStore().createPremium(
|
157
|
+
applicationNftId,
|
158
|
+
premium);
|
169
159
|
|
170
|
-
//
|
160
|
+
// update referral counter if product has linked distributino component
|
161
|
+
{
|
162
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
163
|
+
if (productInfo.hasDistribution) {
|
164
|
+
_distributionService.processReferral(
|
165
|
+
productInfo.distributionNftId,
|
166
|
+
applicationInfo.referralId);
|
167
|
+
}
|
168
|
+
}
|
169
|
+
|
170
|
+
// link policy to risk and bundle
|
171
|
+
NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
|
172
|
+
instance.getRiskSet().linkPolicy(productNftId, riskId, applicationNftId);
|
173
|
+
instance.getBundleSet().linkPolicy(poolNftId, bundleNftId, applicationNftId);
|
171
174
|
|
172
|
-
//
|
175
|
+
// log policy creation before interactions with token and policy holder
|
176
|
+
emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
|
177
|
+
|
178
|
+
// interactions
|
179
|
+
// callback to policy holder if applicable
|
180
|
+
_policyHolderPolicyActivated(applicationNftId, activateAt);
|
173
181
|
}
|
174
182
|
|
175
183
|
|
184
|
+
/// @inheritdoc IPolicyService
|
176
185
|
function collectPremium(
|
177
186
|
NftId policyNftId,
|
178
187
|
Timestamp activateAt
|
179
188
|
)
|
180
189
|
external
|
181
190
|
virtual
|
191
|
+
restricted()
|
192
|
+
nonReentrant()
|
182
193
|
{
|
183
|
-
//
|
184
|
-
(
|
194
|
+
// checks
|
195
|
+
(
|
196
|
+
IInstance instance,
|
197
|
+
NftId productNftId,
|
198
|
+
IPolicy.PolicyInfo memory policyInfo
|
199
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
200
|
+
|
201
|
+
// check policy is in state collateralized
|
185
202
|
InstanceReader instanceReader = instance.getInstanceReader();
|
186
|
-
|
203
|
+
if (instanceReader.getPolicyState(policyNftId) != COLLATERALIZED()) {
|
204
|
+
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
205
|
+
}
|
187
206
|
|
188
|
-
// check
|
189
|
-
if (
|
190
|
-
revert
|
207
|
+
// check if premium has already been collected
|
208
|
+
if (instanceReader.getPremiumState(policyNftId) == PAID()) {
|
209
|
+
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
|
191
210
|
}
|
192
211
|
|
193
|
-
|
212
|
+
// check funds and allowance of policy holder
|
213
|
+
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
214
|
+
instanceReader.getTokenHandler(
|
215
|
+
productNftId).checkBalanceAndAllowance(
|
216
|
+
getRegistry().ownerOf(policyNftId),
|
217
|
+
premium.premiumAmount,
|
218
|
+
false);
|
219
|
+
|
220
|
+
// )
|
221
|
+
// _checkPremiumBalanceAndAllowance(
|
222
|
+
// tokenHandler.TOKEN(),
|
223
|
+
// address(tokenHandler),
|
224
|
+
// getRegistry().ownerOf(policyNftId),
|
225
|
+
// premium.premiumAmount);
|
226
|
+
|
227
|
+
// effects
|
228
|
+
_processSale(
|
229
|
+
instanceReader,
|
230
|
+
instance.getInstanceStore(),
|
231
|
+
productNftId,
|
232
|
+
policyInfo.bundleNftId,
|
233
|
+
policyInfo.referralId,
|
234
|
+
premium);
|
194
235
|
|
195
|
-
//
|
196
|
-
if
|
197
|
-
|
236
|
+
// optionally activate policy
|
237
|
+
if(activateAt.gtz()) {
|
238
|
+
policyInfo = PolicyServiceLib.activate(policyNftId, policyInfo, activateAt);
|
198
239
|
}
|
199
240
|
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
241
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
242
|
+
instance.getInstanceStore().updatePremiumState(policyNftId, PAID());
|
243
|
+
|
244
|
+
// log premium collection before interactions with token
|
245
|
+
emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
|
246
|
+
|
247
|
+
// interactions
|
248
|
+
_transferPremiumAmounts(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
249
|
+
}
|
250
|
+
|
204
251
|
|
252
|
+
/// @inheritdoc IPolicyService
|
253
|
+
function activate(NftId policyNftId, Timestamp activateAt)
|
254
|
+
external
|
255
|
+
virtual
|
256
|
+
restricted()
|
257
|
+
nonReentrant()
|
258
|
+
{
|
259
|
+
// checks
|
260
|
+
(
|
261
|
+
IInstance instance,,
|
262
|
+
IPolicy.PolicyInfo memory policyInfo
|
263
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
264
|
+
|
265
|
+
// effects
|
266
|
+
policyInfo = PolicyServiceLib.activate(policyNftId, policyInfo, activateAt);
|
205
267
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
206
268
|
|
207
|
-
|
208
|
-
|
209
|
-
}
|
269
|
+
// log policy activation before interactions with policy holder
|
270
|
+
emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
|
210
271
|
|
211
|
-
//
|
272
|
+
// interactions
|
273
|
+
// callback to policy holder if applicable
|
274
|
+
_policyHolderPolicyActivated(policyNftId, activateAt);
|
212
275
|
}
|
213
276
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
277
|
+
/// @inheritdoc IPolicyService
|
278
|
+
function adjustActivation(
|
279
|
+
NftId policyNftId,
|
280
|
+
Timestamp newActivateAt
|
281
|
+
)
|
282
|
+
external
|
283
|
+
virtual
|
284
|
+
restricted()
|
285
|
+
nonReentrant()
|
286
|
+
{
|
287
|
+
// checks
|
288
|
+
(
|
289
|
+
IInstance instance,,
|
290
|
+
IPolicy.PolicyInfo memory policyInfo
|
291
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
292
|
+
|
293
|
+
if (policyInfo.activatedAt.eqz()) {
|
294
|
+
revert ErrorPolicyServicePolicyNotActivated(policyNftId);
|
295
|
+
}
|
218
296
|
|
219
|
-
|
297
|
+
if (newActivateAt < TimestampLib.blockTimestamp()) {
|
298
|
+
revert ErrorPolicyServicePolicyActivationTooEarly(policyNftId, TimestampLib.blockTimestamp(), newActivateAt);
|
299
|
+
}
|
220
300
|
|
221
|
-
|
222
|
-
policyInfo.
|
223
|
-
|
301
|
+
if (newActivateAt > policyInfo.expiredAt) {
|
302
|
+
revert ErrorPolicyServicePolicyActivationTooLate(policyNftId, policyInfo.expiredAt, newActivateAt);
|
303
|
+
}
|
224
304
|
|
225
|
-
|
226
|
-
policyInfo.
|
305
|
+
// effects
|
306
|
+
policyInfo.activatedAt = newActivateAt;
|
307
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
227
308
|
|
228
|
-
|
309
|
+
// log policy activation before interactions with policy holder
|
310
|
+
emit LogPolicyServicePolicyActivatedUpdated(policyNftId, newActivateAt);
|
229
311
|
|
230
|
-
//
|
312
|
+
// interactions
|
313
|
+
// callback to policy holder if applicable
|
314
|
+
_policyHolderPolicyActivated(policyNftId, newActivateAt);
|
231
315
|
}
|
232
316
|
|
233
317
|
|
318
|
+
/// @inheritdoc IPolicyService
|
234
319
|
function expire(
|
235
|
-
NftId policyNftId
|
320
|
+
NftId policyNftId,
|
321
|
+
Timestamp expireAt
|
236
322
|
)
|
237
323
|
external
|
238
|
-
|
239
|
-
|
324
|
+
virtual
|
325
|
+
restricted()
|
326
|
+
nonReentrant()
|
327
|
+
returns (Timestamp expiredAt)
|
240
328
|
{
|
241
|
-
|
329
|
+
// checks
|
330
|
+
(
|
331
|
+
IInstance instance,,
|
332
|
+
IPolicy.PolicyInfo memory policyInfo
|
333
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
334
|
+
|
335
|
+
// more checks, effects + interactions
|
336
|
+
return _expire(
|
337
|
+
instance,
|
338
|
+
policyNftId,
|
339
|
+
policyInfo,
|
340
|
+
expireAt
|
341
|
+
);
|
242
342
|
}
|
243
343
|
|
344
|
+
|
345
|
+
/// @inheritdoc IPolicyService
|
346
|
+
function expirePolicy(
|
347
|
+
IInstance instance,
|
348
|
+
NftId policyNftId,
|
349
|
+
Timestamp expireAt
|
350
|
+
)
|
351
|
+
external
|
352
|
+
virtual
|
353
|
+
restricted()
|
354
|
+
nonReentrant()
|
355
|
+
returns (Timestamp expiredAt)
|
356
|
+
{
|
357
|
+
// checks
|
358
|
+
_checkNftType(policyNftId, POLICY());
|
359
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(
|
360
|
+
policyNftId);
|
361
|
+
|
362
|
+
// more checks, effects + interactions
|
363
|
+
return _expire(
|
364
|
+
instance,
|
365
|
+
policyNftId,
|
366
|
+
policyInfo,
|
367
|
+
expireAt
|
368
|
+
);
|
369
|
+
}
|
370
|
+
|
371
|
+
|
372
|
+
/// @inheritdoc IPolicyService
|
244
373
|
function close(
|
245
374
|
NftId policyNftId
|
246
375
|
)
|
247
376
|
external
|
248
|
-
|
377
|
+
virtual
|
378
|
+
restricted()
|
379
|
+
nonReentrant()
|
249
380
|
{
|
250
|
-
|
381
|
+
// checks
|
382
|
+
(
|
383
|
+
IInstance instance,
|
384
|
+
NftId productNftId,
|
385
|
+
IPolicy.PolicyInfo memory policyInfo
|
386
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
251
387
|
InstanceReader instanceReader = instance.getInstanceReader();
|
252
388
|
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
revert ErrorIPolicyServicePolicyNotActivated(policyNftId);
|
257
|
-
}
|
258
|
-
|
259
|
-
StateId state = instanceReader.getPolicyState(policyNftId);
|
260
|
-
if (state != ACTIVE()) {
|
261
|
-
revert ErrorIPolicyServicePolicyNotActive(policyNftId, state);
|
389
|
+
// check policy is in a closeable state
|
390
|
+
if (!PolicyServiceLib.policyIsCloseable(instanceReader, policyNftId)) {
|
391
|
+
revert ErrorPolicyServicePolicyNotCloseable(policyNftId);
|
262
392
|
}
|
263
393
|
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
269
|
-
if (!(policyInfo.premiumAmount == policyInfo.premiumPaidAmount)) {
|
270
|
-
revert ErrorPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
|
271
|
-
}
|
394
|
+
// check that policy has been activated
|
395
|
+
RiskId riskId = policyInfo.riskId;
|
396
|
+
NftId bundleNftId = policyInfo.bundleNftId;
|
272
397
|
|
273
|
-
if (
|
274
|
-
revert
|
398
|
+
if (instanceReader.getPremiumState(policyNftId) != PAID()) {
|
399
|
+
revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
|
275
400
|
}
|
276
401
|
|
277
|
-
|
278
|
-
|
402
|
+
// effects
|
403
|
+
// release (remaining) collateral that was blocked by policy
|
279
404
|
_poolService.releaseCollateral(
|
280
405
|
instance,
|
281
|
-
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
282
406
|
policyNftId,
|
283
407
|
policyInfo);
|
284
408
|
|
409
|
+
// TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
|
410
|
+
|
411
|
+
// update policy state to closed
|
412
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
285
413
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
414
|
+
|
415
|
+
// unlink policy from risk and bundle
|
416
|
+
NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
|
417
|
+
instance.getRiskSet().unlinkPolicy(productNftId, riskId, policyNftId);
|
418
|
+
instance.getBundleSet().unlinkPolicy(poolNftId, bundleNftId, policyNftId);
|
419
|
+
|
420
|
+
emit LogPolicyServicePolicyClosed(policyNftId);
|
286
421
|
}
|
287
422
|
|
288
423
|
|
289
|
-
|
424
|
+
/// @dev shared functionality for expire() and policyExpire().
|
425
|
+
function _expire(
|
290
426
|
IInstance instance,
|
291
|
-
NftId
|
292
|
-
IPolicy.PolicyInfo memory
|
427
|
+
NftId policyNftId,
|
428
|
+
IPolicy.PolicyInfo memory policyInfo,
|
429
|
+
Timestamp expireAt
|
293
430
|
)
|
294
431
|
internal
|
295
|
-
|
296
|
-
returns (
|
297
|
-
Amount premiumPaidAmount
|
298
|
-
)
|
432
|
+
returns (Timestamp)
|
299
433
|
{
|
300
|
-
|
434
|
+
policyInfo = PolicyServiceLib.expire(
|
435
|
+
instance.getInstanceReader(),
|
436
|
+
policyNftId,
|
437
|
+
policyInfo,
|
438
|
+
expireAt);
|
301
439
|
|
302
|
-
|
303
|
-
IPolicy.Premium memory premium = _pricingService.calculatePremium(
|
304
|
-
productNftId,
|
305
|
-
applicationInfo.riskId,
|
306
|
-
applicationInfo.sumInsuredAmount,
|
307
|
-
applicationInfo.lifetime,
|
308
|
-
applicationInfo.applicationData,
|
309
|
-
applicationInfo.bundleNftId,
|
310
|
-
applicationInfo.referralId);
|
440
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
311
441
|
|
442
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, policyInfo.expiredAt);
|
312
443
|
|
313
|
-
//
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
applicationNftId,
|
318
|
-
applicationInfo.premiumAmount,
|
319
|
-
applicationInfo.bundleNftId,
|
320
|
-
applicationInfo.referralId,
|
321
|
-
premium);
|
444
|
+
// interactions
|
445
|
+
// callback to policy holder if applicable
|
446
|
+
_policyHolderPolicyExpired(policyNftId, policyInfo.expiredAt);
|
447
|
+
return policyInfo.expiredAt;
|
322
448
|
}
|
323
449
|
|
324
450
|
|
325
|
-
|
326
|
-
|
451
|
+
/// @dev update counters by calling the involved services
|
452
|
+
function _processSale(
|
453
|
+
InstanceReader instanceReader,
|
454
|
+
InstanceStore instanceStore,
|
327
455
|
NftId productNftId,
|
328
|
-
NftId policyNftId,
|
329
|
-
Amount premiumExpectedAmount,
|
330
456
|
NftId bundleNftId,
|
331
457
|
ReferralId referralId,
|
332
|
-
IPolicy.
|
458
|
+
IPolicy.PremiumInfo memory premium
|
333
459
|
)
|
334
460
|
internal
|
335
461
|
virtual
|
336
|
-
returns (Amount premiumPaidAmount)
|
337
462
|
{
|
338
|
-
|
339
|
-
TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
340
|
-
address policyHolder = getRegistry().ownerOf(policyNftId);
|
341
|
-
premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
|
342
|
-
|
343
|
-
_checkPremiumBalanceAndAllowance(
|
344
|
-
tokenHandler,
|
345
|
-
policyHolder,
|
346
|
-
premiumExpectedAmount,
|
347
|
-
premiumPaidAmount);
|
348
|
-
|
349
|
-
_processSaleAndTransferFunds(
|
463
|
+
(NftId distributionNftId,,,) = _getDistributionNftAndWallets(
|
350
464
|
instanceReader,
|
351
|
-
|
352
|
-
tokenHandler,
|
353
|
-
policyHolder,
|
354
|
-
productNftId,
|
355
|
-
bundleNftId,
|
356
|
-
referralId,
|
357
|
-
premium);
|
358
|
-
}
|
359
|
-
|
465
|
+
productNftId);
|
360
466
|
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
)
|
367
|
-
internal
|
368
|
-
virtual
|
369
|
-
view
|
370
|
-
{
|
371
|
-
// TODO decide how to handle this properly
|
372
|
-
// not clear if this is the best way to handle this
|
373
|
-
if (premiumExpectedAmount < premiumPaidAmount) {
|
374
|
-
revert ErrorPolicyServicePremiumHigherThanExpected(premiumExpectedAmount, premiumPaidAmount);
|
375
|
-
}
|
467
|
+
// update product fees, distribution and pool fees
|
468
|
+
_accountingService.increaseProductFees(
|
469
|
+
instanceStore,
|
470
|
+
productNftId,
|
471
|
+
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
376
472
|
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
473
|
+
// update distribution fees and distributor commission and pool fees
|
474
|
+
if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
475
|
+
_distributionService.processSale(
|
476
|
+
distributionNftId,
|
477
|
+
referralId,
|
478
|
+
premium);
|
383
479
|
}
|
384
480
|
|
385
|
-
|
386
|
-
|
387
|
-
|
481
|
+
// update pool and bundle fees
|
482
|
+
_poolService.processSale(
|
483
|
+
bundleNftId,
|
484
|
+
premium);
|
388
485
|
}
|
389
486
|
|
390
487
|
|
391
|
-
|
488
|
+
/// @dev transfer the premium to the wallets the premium is distributed to
|
489
|
+
function _transferPremiumAmounts(
|
392
490
|
InstanceReader instanceReader,
|
393
|
-
|
394
|
-
TokenHandler tokenHandler,
|
395
|
-
address policyHolder,
|
491
|
+
NftId policyNftId,
|
396
492
|
NftId productNftId,
|
397
|
-
|
398
|
-
ReferralId referralId,
|
399
|
-
IPolicy.Premium memory premium
|
493
|
+
IPolicy.PremiumInfo memory premium
|
400
494
|
)
|
401
495
|
internal
|
402
496
|
virtual
|
403
497
|
{
|
498
|
+
address policyHolder = getRegistry().ownerOf(policyNftId);
|
499
|
+
|
404
500
|
(
|
405
|
-
|
501
|
+
,
|
406
502
|
address distributionWallet,
|
407
503
|
address poolWallet,
|
408
504
|
address productWallet
|
@@ -410,44 +506,78 @@ contract PolicyService is
|
|
410
506
|
instanceReader,
|
411
507
|
productNftId);
|
412
508
|
|
413
|
-
//
|
414
|
-
|
415
|
-
|
416
|
-
productNftId,
|
417
|
-
AmountLib.toAmount(premium.productFeeVarAmount + premium.productFeeFixAmount));
|
509
|
+
// step 1: collect premium amount from policy holder
|
510
|
+
TokenHandler tokenHandler = instanceReader.getTokenHandler(productNftId);
|
511
|
+
tokenHandler.pullToken(policyHolder, premium.premiumAmount);
|
418
512
|
|
419
|
-
//
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
premium);
|
513
|
+
// step 2: push distribution fee to distribution wallet
|
514
|
+
if (premium.distributionFeeAndCommissionAmount.gtz()) {
|
515
|
+
tokenHandler.pushToken(distributionWallet, premium.distributionFeeAndCommissionAmount);
|
516
|
+
}
|
424
517
|
|
425
|
-
//
|
426
|
-
|
427
|
-
|
428
|
-
|
518
|
+
// step 3: push pool fee, bundle fee and pool premium to pool wallet
|
519
|
+
if (premium.poolPremiumAndFeeAmount.gtz()) {
|
520
|
+
tokenHandler.pushToken(poolWallet, premium.poolPremiumAndFeeAmount);
|
521
|
+
}
|
522
|
+
}
|
523
|
+
function _policyHolderPolicyActivated(
|
524
|
+
NftId policyNftId,
|
525
|
+
Timestamp activateAt
|
526
|
+
)
|
527
|
+
internal
|
528
|
+
virtual
|
529
|
+
{
|
530
|
+
// immediately return if policy is not activated
|
531
|
+
if (activateAt.eqz()) {
|
532
|
+
return;
|
533
|
+
}
|
534
|
+
|
535
|
+
// get policy holder address
|
536
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
429
537
|
|
430
|
-
//
|
431
|
-
|
432
|
-
|
433
|
-
|
538
|
+
// execute callback if policy holder implements IPolicyHolder
|
539
|
+
if (address(policyHolder) != address(0)) {
|
540
|
+
policyHolder.policyActivated(policyNftId, activateAt);
|
541
|
+
}
|
434
542
|
}
|
435
543
|
|
436
544
|
|
437
|
-
function
|
438
|
-
|
439
|
-
|
545
|
+
function _policyHolderPolicyExpired(
|
546
|
+
NftId policyNftId,
|
547
|
+
Timestamp expiredAt
|
440
548
|
)
|
441
|
-
internal
|
549
|
+
internal
|
442
550
|
virtual
|
551
|
+
{
|
552
|
+
// immediately return if policy is not activated
|
553
|
+
if (expiredAt.eqz()) {
|
554
|
+
return;
|
555
|
+
}
|
556
|
+
|
557
|
+
// get policy holder address
|
558
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
559
|
+
|
560
|
+
// execute callback if policy holder implements IPolicyHolder
|
561
|
+
if (address(policyHolder) != address(0)) {
|
562
|
+
policyHolder.policyExpired(policyNftId, expiredAt);
|
563
|
+
}
|
564
|
+
}
|
565
|
+
|
566
|
+
|
567
|
+
function _getPolicyHolder(NftId policyNftId)
|
568
|
+
internal
|
443
569
|
view
|
444
|
-
returns (
|
445
|
-
TokenHandler tokenHandler
|
446
|
-
)
|
570
|
+
returns (IPolicyHolder policyHolder)
|
447
571
|
{
|
448
|
-
|
572
|
+
address policyHolderAddress = getRegistry().ownerOf(policyNftId);
|
573
|
+
policyHolder = IPolicyHolder(policyHolderAddress);
|
574
|
+
|
575
|
+
if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
|
576
|
+
policyHolder = IPolicyHolder(address(0));
|
577
|
+
}
|
449
578
|
}
|
450
579
|
|
580
|
+
|
451
581
|
function _getDistributionNftAndWallets(
|
452
582
|
InstanceReader instanceReader,
|
453
583
|
NftId productNftId
|
@@ -462,10 +592,45 @@ contract PolicyService is
|
|
462
592
|
)
|
463
593
|
{
|
464
594
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
595
|
+
productWallet = instanceReader.getComponentInfo(productNftId).tokenHandler.getWallet();
|
596
|
+
poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).tokenHandler.getWallet();
|
597
|
+
|
598
|
+
if (productInfo.hasDistribution) {
|
599
|
+
distributionNftId = productInfo.distributionNftId;
|
600
|
+
distributionWallet = instanceReader.getComponentInfo(distributionNftId).tokenHandler.getWallet();
|
601
|
+
}
|
602
|
+
}
|
603
|
+
|
604
|
+
|
605
|
+
function _getAndVerifyCallerForPolicy(NftId policyNftId)
|
606
|
+
internal
|
607
|
+
virtual
|
608
|
+
view
|
609
|
+
returns (
|
610
|
+
IInstance instance,
|
611
|
+
NftId productNftId,
|
612
|
+
IPolicy.PolicyInfo memory policyInfo
|
613
|
+
)
|
614
|
+
{
|
615
|
+
(
|
616
|
+
IRegistry.ObjectInfo memory productInfo,
|
617
|
+
address instanceAddress
|
618
|
+
) = ContractLib.getAndVerifyComponent(
|
619
|
+
getRegistry(),
|
620
|
+
msg.sender, // caller contract
|
621
|
+
PRODUCT(), // caller must be product
|
622
|
+
true); // only active caller
|
623
|
+
|
624
|
+
productNftId = productInfo.nftId; // calling product nft id
|
625
|
+
instance = IInstance(instanceAddress);
|
626
|
+
policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
627
|
+
|
628
|
+
if (policyInfo.productNftId != productNftId) {
|
629
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
630
|
+
policyNftId,
|
631
|
+
productNftId,
|
632
|
+
policyInfo.productNftId);
|
633
|
+
}
|
469
634
|
}
|
470
635
|
|
471
636
|
|