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