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