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