@etherisc/gif-next 0.0.2-d13bb9e-069 → 0.0.2-d18e1c5-511
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 +91 -7
- 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 +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +684 -254
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +560 -201
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +204 -312
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +123 -196
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +629 -225
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +195 -83
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +102 -170
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +429 -77
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +227 -244
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +430 -35
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +445 -348
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +427 -36
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +408 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +805 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2185 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +805 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +293 -275
- 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 +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +175 -185
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +343 -251
- 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 +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +957 -362
- 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/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +55 -197
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/KeyValueStore.sol/KeyValueStore.json → instance/IBaseStore.sol/IBaseStore.json} +34 -227
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +578 -65
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +395 -60
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +641 -119
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1023 -362
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +328 -92
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1131 -553
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +416 -131
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +119 -61
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1290 -1858
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- 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/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +161 -193
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +424 -37
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +116 -119
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +137 -145
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +196 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +153 -53
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +165 -209
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +347 -340
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -100
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +247 -145
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +131 -173
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +400 -218
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +144 -191
- 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 +626 -405
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +187 -79
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +356 -57
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +142 -50
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +284 -233
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +323 -184
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +153 -93
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +296 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +209 -18
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +194 -54
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +140 -37
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +254 -198
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +286 -21
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +320 -184
- 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 +169 -85
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +197 -130
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +134 -66
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +274 -223
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +367 -82
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +142 -50
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +125 -33
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +169 -37
- 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 +169 -69
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +766 -464
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +206 -70
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +118 -46
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +478 -258
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +113 -103
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +495 -517
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +154 -86
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +544 -4
- 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 +93 -78
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +432 -290
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +116 -119
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -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 +84 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +136 -144
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +37 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +171 -38
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +84 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
- 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 +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1492 -183
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1651 -304
- 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/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +163 -66
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +281 -173
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +121 -53
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1645 -790
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +160 -88
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +11 -11
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
- 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 +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +49 -50
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.json +33 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +64 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +69 -2
- 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 +61 -37
- 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 +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +95 -25
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- 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 +460 -272
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +159 -211
- package/contracts/authorization/IAccess.sol +25 -6
- package/contracts/authorization/IAccessAdmin.sol +87 -78
- package/contracts/authorization/IAuthorization.sol +9 -37
- package/contracts/authorization/IServiceAuthorization.sol +57 -17
- package/contracts/authorization/ServiceAuthorization.sol +255 -25
- package/contracts/distribution/BasicDistribution.sol +21 -19
- package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
- package/contracts/distribution/Distribution.sol +45 -95
- package/contracts/distribution/DistributionService.sol +221 -109
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +4 -11
- package/contracts/distribution/IDistributionService.sol +38 -24
- package/contracts/examples/fire/FirePool.sol +24 -13
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +79 -56
- package/contracts/examples/fire/FireProductAuthorization.sol +3 -3
- package/contracts/examples/flight/FlightLib.sol +279 -0
- package/contracts/examples/flight/FlightOracle.sol +167 -0
- package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
- package/contracts/examples/flight/FlightPool.sol +89 -0
- package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
- package/contracts/examples/flight/FlightProduct.sol +470 -0
- package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
- package/contracts/examples/flight/FlightUSD.sol +26 -0
- package/contracts/examples/flight/originalV1.sol +396 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +43 -12
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +8 -12
- package/contracts/examples/unpermissioned/SimplePool.sol +36 -10
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +134 -48
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +111 -18
- package/contracts/instance/IInstanceService.sol +61 -34
- package/contracts/instance/Instance.sol +196 -74
- package/contracts/instance/InstanceAdmin.sol +270 -179
- package/contracts/instance/InstanceAuthorizationV3.sol +152 -81
- package/contracts/instance/InstanceReader.sol +453 -314
- package/contracts/instance/InstanceService.sol +313 -264
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +152 -116
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +126 -0
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +6 -8
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +25 -13
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +28 -7
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/oracle/BasicOracle.sol +3 -7
- package/contracts/oracle/BasicOracleAuthorization.sol +14 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleService.sol +14 -13
- package/contracts/oracle/Oracle.sol +9 -24
- package/contracts/oracle/OracleService.sol +113 -84
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +35 -40
- package/contracts/pool/BasicPoolAuthorization.sol +34 -11
- package/contracts/pool/BundleService.sol +112 -187
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +28 -55
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +65 -66
- package/contracts/pool/Pool.sol +114 -136
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +308 -257
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +102 -26
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +10 -15
- package/contracts/product/BasicProductAuthorization.sol +33 -12
- package/contracts/product/ClaimService.sol +241 -196
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +28 -3
- package/contracts/product/IClaimService.sol +18 -5
- package/contracts/product/IPolicyService.sol +34 -12
- package/contracts/product/IPricingService.sol +10 -9
- package/contracts/product/IProductComponent.sol +10 -1
- package/contracts/product/IRiskService.sol +25 -10
- package/contracts/product/PolicyService.sol +264 -305
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +58 -52
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +136 -77
- package/contracts/product/RiskService.sol +130 -37
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +10 -11
- package/contracts/registry/IRegistry.sol +29 -27
- package/contracts/registry/IRegistryService.sol +6 -4
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +44 -15
- package/contracts/registry/RegistryAdmin.sol +107 -380
- package/contracts/registry/RegistryAuthorization.sol +336 -0
- package/contracts/registry/RegistryService.sol +41 -59
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +278 -244
- package/contracts/registry/ServiceAuthorizationV3.sol +203 -59
- package/contracts/registry/TokenRegistry.sol +61 -59
- package/contracts/shared/Component.sol +67 -125
- package/contracts/shared/ComponentService.sol +425 -375
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ContractLib.sol +277 -3
- package/contracts/shared/IComponent.sol +6 -18
- package/contracts/shared/IComponentService.sol +43 -40
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +4 -0
- package/contracts/shared/IRegisterable.sol +22 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +114 -53
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +29 -7
- package/contracts/shared/PolicyHolder.sol +4 -3
- package/contracts/shared/Registerable.sol +50 -19
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +14 -34
- package/contracts/shared/TokenHandler.sol +275 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +271 -72
- package/contracts/staking/IStakingService.sol +45 -78
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +524 -225
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +70 -82
- package/contracts/staking/StakingService.sol +62 -148
- package/contracts/staking/StakingServiceManager.sol +6 -4
- package/contracts/staking/StakingStore.sol +1093 -330
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +15 -15
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +71 -68
- package/contracts/type/Referral.sol +6 -0
- package/contracts/type/RequestIdSet.sol +62 -0
- package/contracts/type/RiskId.sol +26 -8
- package/contracts/type/RoleId.sol +61 -55
- package/contracts/type/Seconds.sol +23 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +14 -1
- package/contracts/type/String.sol +42 -0
- package/contracts/type/Timestamp.sol +14 -8
- package/contracts/type/UFixed.sol +35 -127
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +27 -12
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +5 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -432
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -164
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/ComponentVerifyingService.sol +0 -116
- package/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -1,50 +1,40 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
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, NftIdLib} 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";
|
4
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
28
5
|
import {IComponentService} from "../shared/IComponentService.sol";
|
6
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
29
7
|
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
30
8
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
31
9
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
10
|
+
import {IInstance} from "../instance/IInstance.sol";
|
11
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
32
12
|
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
33
13
|
import {IPolicyService} from "./IPolicyService.sol";
|
34
14
|
import {IPoolService} from "../pool/IPoolService.sol";
|
35
15
|
import {IPricingService} from "./IPricingService.sol";
|
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";
|
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
|
+
|
36
31
|
|
37
32
|
contract PolicyService is
|
38
|
-
|
33
|
+
Service,
|
39
34
|
IPolicyService
|
40
35
|
{
|
41
|
-
|
42
|
-
using TimestampLib for Timestamp;
|
43
|
-
|
44
|
-
IApplicationService internal _applicationService;
|
36
|
+
IAccountingService private _accountingService;
|
45
37
|
IComponentService internal _componentService;
|
46
|
-
IBundleService internal _bundleService;
|
47
|
-
IClaimService internal _claimService;
|
48
38
|
IDistributionService internal _distributionService;
|
49
39
|
IPoolService internal _poolService;
|
50
40
|
IPricingService internal _pricingService;
|
@@ -58,17 +48,15 @@ contract PolicyService is
|
|
58
48
|
initializer
|
59
49
|
{
|
60
50
|
(
|
61
|
-
address
|
62
|
-
address
|
51
|
+
address authority,
|
52
|
+
address registry
|
63
53
|
) = abi.decode(data, (address, address));
|
64
54
|
|
65
|
-
|
55
|
+
__Service_init(authority, registry, owner);
|
66
56
|
|
67
57
|
VersionPart majorVersion = getVersion().toMajorPart();
|
68
|
-
|
69
|
-
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
58
|
+
_accountingService = IAccountingService(getRegistry().getServiceAddress(ACCOUNTING(), majorVersion));
|
70
59
|
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
71
|
-
_claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
|
72
60
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
73
61
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
74
62
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
@@ -82,28 +70,20 @@ contract PolicyService is
|
|
82
70
|
)
|
83
71
|
external
|
84
72
|
virtual
|
73
|
+
restricted()
|
85
74
|
nonReentrant()
|
86
75
|
{
|
87
|
-
|
88
|
-
|
76
|
+
// checks
|
77
|
+
(IInstance instance,,) = _getAndVerifyCallerForPolicy(applicationNftId);
|
89
78
|
|
90
79
|
// check policy is in state applied
|
91
|
-
if (
|
80
|
+
if (instance.getInstanceReader().getPolicyState(applicationNftId) != APPLIED()) {
|
92
81
|
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
93
82
|
}
|
94
83
|
|
95
|
-
//
|
96
|
-
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
97
|
-
if(applicationInfo.productNftId != productNftId) {
|
98
|
-
revert ErrorPolicyServicePolicyProductMismatch(
|
99
|
-
applicationNftId,
|
100
|
-
applicationInfo.productNftId,
|
101
|
-
productNftId);
|
102
|
-
}
|
103
|
-
|
104
|
-
|
84
|
+
// effects
|
105
85
|
// store updated policy info
|
106
|
-
instance.
|
86
|
+
instance.getProductStore().updatePolicyState(
|
107
87
|
applicationNftId,
|
108
88
|
DECLINED());
|
109
89
|
|
@@ -114,83 +94,93 @@ contract PolicyService is
|
|
114
94
|
/// @inheritdoc IPolicyService
|
115
95
|
function createPolicy(
|
116
96
|
NftId applicationNftId, // = policyNftId
|
117
|
-
Timestamp activateAt
|
97
|
+
Timestamp activateAt,
|
98
|
+
Amount maxPremiumAmount
|
118
99
|
)
|
119
100
|
external
|
120
101
|
virtual
|
102
|
+
restricted()
|
121
103
|
nonReentrant()
|
104
|
+
returns (Amount premiumAmount)
|
122
105
|
{
|
123
|
-
//
|
124
|
-
(
|
125
|
-
|
106
|
+
// checks
|
107
|
+
(
|
108
|
+
IInstance instance,
|
109
|
+
NftId productNftId,
|
110
|
+
IPolicy.PolicyInfo memory applicationInfo
|
111
|
+
) = _getAndVerifyCallerForPolicy(applicationNftId);
|
126
112
|
|
127
113
|
// check policy is in state applied
|
114
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
128
115
|
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
129
116
|
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
130
117
|
}
|
131
118
|
|
132
|
-
//
|
133
|
-
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
134
|
-
if(applicationInfo.productNftId != productNftId) {
|
135
|
-
revert ErrorPolicyServicePolicyProductMismatch(
|
136
|
-
applicationNftId,
|
137
|
-
applicationInfo.productNftId,
|
138
|
-
productNftId);
|
139
|
-
}
|
140
|
-
|
119
|
+
// effects
|
141
120
|
// actual collateralizaion
|
142
121
|
_poolService.lockCollateral(
|
143
122
|
instance,
|
144
|
-
address(instanceReader.
|
123
|
+
address(instanceReader.getToken(productNftId)),
|
145
124
|
productNftId,
|
146
125
|
applicationNftId,
|
147
126
|
applicationInfo.bundleNftId,
|
148
127
|
applicationInfo.sumInsuredAmount);
|
149
128
|
|
150
129
|
// optional activation of policy
|
151
|
-
if(activateAt
|
152
|
-
applicationInfo =
|
153
|
-
applicationNftId,
|
154
|
-
applicationInfo,
|
155
|
-
activateAt);
|
130
|
+
if(activateAt.gtz()) {
|
131
|
+
applicationInfo = PolicyServiceLib.activate(applicationNftId, applicationInfo, activateAt);
|
156
132
|
}
|
157
133
|
|
158
134
|
// update policy and set state to collateralized
|
159
|
-
instance.
|
135
|
+
instance.getProductStore().updatePolicy(
|
160
136
|
applicationNftId,
|
161
137
|
applicationInfo,
|
162
138
|
COLLATERALIZED());
|
163
139
|
|
164
140
|
// calculate and store premium
|
141
|
+
RiskId riskId = applicationInfo.riskId;
|
142
|
+
NftId bundleNftId = applicationInfo.bundleNftId;
|
143
|
+
|
165
144
|
IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
|
166
145
|
productNftId,
|
167
|
-
|
146
|
+
riskId,
|
168
147
|
applicationInfo.sumInsuredAmount,
|
169
148
|
applicationInfo.lifetime,
|
170
149
|
applicationInfo.applicationData,
|
171
|
-
|
150
|
+
bundleNftId,
|
172
151
|
applicationInfo.referralId);
|
173
152
|
|
174
|
-
|
153
|
+
if (premium.premiumAmount > maxPremiumAmount) {
|
154
|
+
revert LogPolicyServiceMaxPremiumAmountExceeded(
|
155
|
+
applicationNftId,
|
156
|
+
maxPremiumAmount,
|
157
|
+
premium.premiumAmount);
|
158
|
+
}
|
159
|
+
|
160
|
+
premiumAmount = premium.premiumAmount;
|
161
|
+
instance.getProductStore().createPremium(
|
175
162
|
applicationNftId,
|
176
163
|
premium);
|
177
164
|
|
178
|
-
// update referral counter
|
165
|
+
// update referral counter if product has linked distributino component
|
179
166
|
{
|
180
167
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
181
|
-
|
182
|
-
if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
168
|
+
if (productInfo.hasDistribution) {
|
183
169
|
_distributionService.processReferral(
|
184
170
|
productInfo.distributionNftId,
|
185
171
|
applicationInfo.referralId);
|
186
172
|
}
|
187
173
|
}
|
188
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);
|
179
|
+
|
189
180
|
// log policy creation before interactions with token and policy holder
|
190
181
|
emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
|
191
182
|
|
192
|
-
//
|
193
|
-
|
183
|
+
// interactions
|
194
184
|
// callback to policy holder if applicable
|
195
185
|
_policyHolderPolicyActivated(applicationNftId, activateAt);
|
196
186
|
}
|
@@ -203,68 +193,132 @@ contract PolicyService is
|
|
203
193
|
)
|
204
194
|
external
|
205
195
|
virtual
|
196
|
+
restricted()
|
206
197
|
nonReentrant()
|
207
198
|
{
|
208
|
-
//
|
209
|
-
(
|
210
|
-
|
211
|
-
|
199
|
+
// checks
|
200
|
+
(
|
201
|
+
IInstance instance,
|
202
|
+
NftId productNftId,
|
203
|
+
IPolicy.PolicyInfo memory policyInfo
|
204
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
212
205
|
|
213
|
-
// check policy is in state collateralized
|
214
|
-
|
206
|
+
// check policy is in state collateralized
|
207
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
208
|
+
if (instanceReader.getPolicyState(policyNftId) != COLLATERALIZED()) {
|
215
209
|
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
216
210
|
}
|
217
211
|
|
218
|
-
// check if premium
|
219
|
-
if (instanceReader.
|
212
|
+
// check if premium has already been collected
|
213
|
+
if (instanceReader.getPremiumState(policyNftId) == PAID()) {
|
220
214
|
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
|
221
215
|
}
|
222
216
|
|
223
|
-
|
224
|
-
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
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,
|
230
239
|
premium);
|
231
240
|
|
232
241
|
// optionally activate policy
|
233
242
|
if(activateAt.gtz()) {
|
234
|
-
policyInfo =
|
243
|
+
policyInfo = PolicyServiceLib.activate(policyNftId, policyInfo, activateAt);
|
235
244
|
}
|
236
245
|
|
237
|
-
instance.
|
238
|
-
instance.
|
246
|
+
instance.getProductStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
247
|
+
instance.getProductStore().updatePremiumState(policyNftId, PAID());
|
239
248
|
|
240
249
|
// log premium collection before interactions with token
|
241
250
|
emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
|
242
251
|
|
243
|
-
|
252
|
+
// interactions
|
253
|
+
_transferPremiumAmounts(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
244
254
|
}
|
245
255
|
|
256
|
+
|
246
257
|
/// @inheritdoc IPolicyService
|
247
258
|
function activate(NftId policyNftId, Timestamp activateAt)
|
248
259
|
external
|
249
260
|
virtual
|
261
|
+
restricted()
|
250
262
|
nonReentrant()
|
251
263
|
{
|
252
|
-
//
|
253
|
-
(
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
264
|
+
// checks
|
265
|
+
(
|
266
|
+
IInstance instance,,
|
267
|
+
IPolicy.PolicyInfo memory policyInfo
|
268
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
258
269
|
|
259
|
-
|
270
|
+
// effects
|
271
|
+
policyInfo = PolicyServiceLib.activate(policyNftId, policyInfo, activateAt);
|
272
|
+
instance.getProductStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
260
273
|
|
261
274
|
// log policy activation before interactions with policy holder
|
262
275
|
emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
|
263
276
|
|
277
|
+
// interactions
|
264
278
|
// callback to policy holder if applicable
|
265
279
|
_policyHolderPolicyActivated(policyNftId, activateAt);
|
266
280
|
}
|
267
281
|
|
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);
|
297
|
+
|
298
|
+
if (policyInfo.activatedAt.eqz()) {
|
299
|
+
revert ErrorPolicyServicePolicyNotActivated(policyNftId);
|
300
|
+
}
|
301
|
+
|
302
|
+
if (newActivateAt < TimestampLib.current()) {
|
303
|
+
revert ErrorPolicyServicePolicyActivationTooEarly(policyNftId, TimestampLib.current(), newActivateAt);
|
304
|
+
}
|
305
|
+
|
306
|
+
if (newActivateAt > policyInfo.expiredAt) {
|
307
|
+
revert ErrorPolicyServicePolicyActivationTooLate(policyNftId, policyInfo.expiredAt, newActivateAt);
|
308
|
+
}
|
309
|
+
|
310
|
+
// effects
|
311
|
+
policyInfo.activatedAt = newActivateAt;
|
312
|
+
instance.getProductStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
313
|
+
|
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);
|
320
|
+
}
|
321
|
+
|
268
322
|
|
269
323
|
/// @inheritdoc IPolicyService
|
270
324
|
function expire(
|
@@ -273,27 +327,26 @@ contract PolicyService is
|
|
273
327
|
)
|
274
328
|
external
|
275
329
|
virtual
|
330
|
+
restricted()
|
276
331
|
nonReentrant()
|
277
332
|
returns (Timestamp expiredAt)
|
278
333
|
{
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
revert ErrorPolicyServicePolicyProductMismatch(
|
285
|
-
policyNftId,
|
286
|
-
policyInfo.productNftId,
|
287
|
-
productNftId);
|
288
|
-
}
|
334
|
+
// checks
|
335
|
+
(
|
336
|
+
IInstance instance,,
|
337
|
+
IPolicy.PolicyInfo memory policyInfo
|
338
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
289
339
|
|
340
|
+
// more checks, effects + interactions
|
290
341
|
return _expire(
|
291
342
|
instance,
|
292
343
|
policyNftId,
|
344
|
+
policyInfo,
|
293
345
|
expireAt
|
294
346
|
);
|
295
347
|
}
|
296
348
|
|
349
|
+
|
297
350
|
/// @inheritdoc IPolicyService
|
298
351
|
function expirePolicy(
|
299
352
|
IInstance instance,
|
@@ -302,172 +355,104 @@ contract PolicyService is
|
|
302
355
|
)
|
303
356
|
external
|
304
357
|
virtual
|
358
|
+
restricted()
|
305
359
|
nonReentrant()
|
306
360
|
returns (Timestamp expiredAt)
|
307
361
|
{
|
362
|
+
// checks
|
363
|
+
_checkNftType(policyNftId, POLICY());
|
364
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(
|
365
|
+
policyNftId);
|
366
|
+
|
367
|
+
// more checks, effects + interactions
|
308
368
|
return _expire(
|
309
369
|
instance,
|
310
370
|
policyNftId,
|
371
|
+
policyInfo,
|
311
372
|
expireAt
|
312
373
|
);
|
313
374
|
}
|
314
375
|
|
315
|
-
function _expire(
|
316
|
-
IInstance instance,
|
317
|
-
NftId policyNftId,
|
318
|
-
Timestamp expireAt
|
319
|
-
)
|
320
|
-
internal
|
321
|
-
returns (Timestamp expiredAt)
|
322
|
-
{
|
323
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
324
|
-
|
325
|
-
// check policy is active
|
326
|
-
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
327
|
-
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
328
|
-
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
329
|
-
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
330
|
-
}
|
331
|
-
|
332
|
-
// set return value to provided timestamp
|
333
|
-
expiredAt = expireAt;
|
334
|
-
|
335
|
-
// update expiredAt to current block timestamp if not set
|
336
|
-
if (expiredAt.eqz()) {
|
337
|
-
expiredAt = TimestampLib.blockTimestamp();
|
338
|
-
}
|
339
|
-
|
340
|
-
// check expiredAt represents a valid expiry time
|
341
|
-
if (expiredAt >= policyInfo.expiredAt) {
|
342
|
-
revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
|
343
|
-
}
|
344
|
-
if (expiredAt < TimestampLib.blockTimestamp()) {
|
345
|
-
revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
|
346
|
-
}
|
347
|
-
|
348
|
-
// update policyInfo with new expiredAt timestamp
|
349
|
-
Timestamp originalExpiredAt = policyInfo.expiredAt;
|
350
|
-
policyInfo.expiredAt = expiredAt;
|
351
|
-
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
352
|
-
|
353
|
-
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
|
354
|
-
|
355
|
-
// callback to policy holder if applicable
|
356
|
-
_policyHolderPolicyExpired(policyNftId, expiredAt);
|
357
|
-
}
|
358
|
-
|
359
376
|
|
377
|
+
/// @inheritdoc IPolicyService
|
360
378
|
function close(
|
361
379
|
NftId policyNftId
|
362
380
|
)
|
363
381
|
external
|
364
382
|
virtual
|
383
|
+
restricted()
|
365
384
|
nonReentrant()
|
366
385
|
{
|
367
|
-
|
386
|
+
// checks
|
387
|
+
(
|
388
|
+
IInstance instance,
|
389
|
+
NftId productNftId,
|
390
|
+
IPolicy.PolicyInfo memory policyInfo
|
391
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
368
392
|
InstanceReader instanceReader = instance.getInstanceReader();
|
369
393
|
|
370
|
-
// check
|
371
|
-
|
372
|
-
|
373
|
-
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
374
|
-
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
375
|
-
}
|
376
|
-
|
377
|
-
// check that policy has not already been closed
|
378
|
-
if (policyInfo.closedAt.gtz()) {
|
379
|
-
revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
|
394
|
+
// check policy is in a closeable state
|
395
|
+
if (!PolicyServiceLib.policyIsCloseable(instanceReader, policyNftId)) {
|
396
|
+
revert ErrorPolicyServicePolicyNotCloseable(policyNftId);
|
380
397
|
}
|
381
398
|
|
382
|
-
// check that policy
|
383
|
-
|
384
|
-
|
385
|
-
}
|
399
|
+
// check that policy has been activated
|
400
|
+
RiskId riskId = policyInfo.riskId;
|
401
|
+
NftId bundleNftId = policyInfo.bundleNftId;
|
386
402
|
|
387
|
-
|
388
|
-
// TODO consider to remove requirement for fully paid premiums altogether
|
389
|
-
if (! instanceReader.getPremiumInfoState(policyNftId).eq(PAID())) {
|
403
|
+
if (instanceReader.getPremiumState(policyNftId) != PAID()) {
|
390
404
|
revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
|
391
405
|
}
|
392
406
|
|
407
|
+
// effects
|
393
408
|
// release (remaining) collateral that was blocked by policy
|
394
409
|
_poolService.releaseCollateral(
|
395
410
|
instance,
|
396
|
-
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
397
411
|
policyNftId,
|
398
412
|
policyInfo);
|
399
413
|
|
400
414
|
// TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
|
401
415
|
|
402
416
|
// update policy state to closed
|
403
|
-
policyInfo.closedAt = TimestampLib.
|
404
|
-
instance.
|
417
|
+
policyInfo.closedAt = TimestampLib.current();
|
418
|
+
instance.getProductStore().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);
|
405
424
|
|
406
425
|
emit LogPolicyServicePolicyClosed(policyNftId);
|
407
426
|
}
|
408
427
|
|
409
428
|
|
410
|
-
/// @dev
|
411
|
-
function
|
429
|
+
/// @dev shared functionality for expire() and policyExpire().
|
430
|
+
function _expire(
|
412
431
|
IInstance instance,
|
413
|
-
NftId
|
414
|
-
IPolicy.PolicyInfo memory applicationInfo,
|
415
|
-
IPolicy.PremiumInfo memory premium
|
416
|
-
)
|
417
|
-
internal
|
418
|
-
virtual
|
419
|
-
{
|
420
|
-
NftId productNftId = applicationInfo.productNftId;
|
421
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
422
|
-
|
423
|
-
// check if premium balance and allowance of policy holder is sufficient
|
424
|
-
{
|
425
|
-
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
426
|
-
address policyHolder = getRegistry().ownerOf(applicationNftId);
|
427
|
-
|
428
|
-
_checkPremiumBalanceAndAllowance(
|
429
|
-
tokenHandler.getToken(),
|
430
|
-
address(tokenHandler),
|
431
|
-
policyHolder,
|
432
|
-
premium.premiumAmount);
|
433
|
-
}
|
434
|
-
|
435
|
-
// update the counters
|
436
|
-
_processSale(
|
437
|
-
instanceReader,
|
438
|
-
instance.getInstanceStore(),
|
439
|
-
productNftId,
|
440
|
-
applicationInfo.bundleNftId,
|
441
|
-
applicationInfo.referralId,
|
442
|
-
premium);
|
443
|
-
}
|
444
|
-
|
445
|
-
function _activate(
|
446
|
-
NftId policyNftId,
|
432
|
+
NftId policyNftId,
|
447
433
|
IPolicy.PolicyInfo memory policyInfo,
|
448
|
-
Timestamp
|
434
|
+
Timestamp expireAt
|
449
435
|
)
|
450
436
|
internal
|
451
|
-
|
452
|
-
view
|
453
|
-
returns (IPolicy.PolicyInfo memory)
|
437
|
+
returns (Timestamp)
|
454
438
|
{
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
439
|
+
policyInfo = PolicyServiceLib.expire(
|
440
|
+
instance.getInstanceReader(),
|
441
|
+
policyNftId,
|
442
|
+
policyInfo,
|
443
|
+
expireAt);
|
459
444
|
|
460
|
-
|
461
|
-
if (policyInfo.activatedAt == activateAt) {
|
462
|
-
return policyInfo;
|
463
|
-
}
|
445
|
+
instance.getProductStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
464
446
|
|
465
|
-
policyInfo.
|
466
|
-
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
447
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, policyInfo.expiredAt);
|
467
448
|
|
468
|
-
|
449
|
+
// interactions
|
450
|
+
// callback to policy holder if applicable
|
451
|
+
_policyHolderPolicyExpired(policyNftId, policyInfo.expiredAt);
|
452
|
+
return policyInfo.expiredAt;
|
469
453
|
}
|
470
454
|
|
455
|
+
|
471
456
|
/// @dev update counters by calling the involved services
|
472
457
|
function _processSale(
|
473
458
|
InstanceReader instanceReader,
|
@@ -480,12 +465,12 @@ contract PolicyService is
|
|
480
465
|
internal
|
481
466
|
virtual
|
482
467
|
{
|
483
|
-
(NftId distributionNftId
|
468
|
+
(NftId distributionNftId,,,) = _getDistributionNftAndWallets(
|
484
469
|
instanceReader,
|
485
470
|
productNftId);
|
486
471
|
|
487
472
|
// update product fees, distribution and pool fees
|
488
|
-
|
473
|
+
_accountingService.increaseProductFees(
|
489
474
|
instanceStore,
|
490
475
|
productNftId,
|
491
476
|
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
@@ -506,7 +491,7 @@ contract PolicyService is
|
|
506
491
|
|
507
492
|
|
508
493
|
/// @dev transfer the premium to the wallets the premium is distributed to
|
509
|
-
function
|
494
|
+
function _transferPremiumAmounts(
|
510
495
|
InstanceReader instanceReader,
|
511
496
|
NftId policyNftId,
|
512
497
|
NftId productNftId,
|
@@ -515,7 +500,6 @@ contract PolicyService is
|
|
515
500
|
internal
|
516
501
|
virtual
|
517
502
|
{
|
518
|
-
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
519
503
|
address policyHolder = getRegistry().ownerOf(policyNftId);
|
520
504
|
|
521
505
|
(
|
@@ -527,58 +511,20 @@ contract PolicyService is
|
|
527
511
|
instanceReader,
|
528
512
|
productNftId);
|
529
513
|
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
premium.productFeeAmount,
|
534
|
-
distributionWallet,
|
535
|
-
premium.distributionFeeAndCommissionAmount,
|
536
|
-
poolWallet,
|
537
|
-
premium.poolPremiumAndFeeAmount);
|
538
|
-
}
|
539
|
-
|
540
|
-
|
541
|
-
/// @dev checks that policy has been collateralized and has been activated.
|
542
|
-
/// does not check if policy has been expired or closed.
|
543
|
-
function _policyHasBeenActivated(
|
544
|
-
StateId policyState,
|
545
|
-
IPolicy.PolicyInfo memory policyInfo
|
546
|
-
)
|
547
|
-
internal
|
548
|
-
view
|
549
|
-
returns (bool)
|
550
|
-
{
|
551
|
-
if (policyState != COLLATERALIZED()) { return false; }
|
552
|
-
if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
|
553
|
-
return true;
|
554
|
-
}
|
555
|
-
|
514
|
+
// step 1: collect premium amount from policy holder
|
515
|
+
TokenHandler tokenHandler = instanceReader.getTokenHandler(productNftId);
|
516
|
+
tokenHandler.pullToken(policyHolder, premium.premiumAmount);
|
556
517
|
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
address tokenHandlerAddress,
|
561
|
-
address policyHolder,
|
562
|
-
Amount premiumAmount
|
563
|
-
)
|
564
|
-
internal
|
565
|
-
virtual
|
566
|
-
view
|
567
|
-
{
|
568
|
-
uint256 premium = premiumAmount.toInt();
|
569
|
-
uint256 balance = token.balanceOf(policyHolder);
|
570
|
-
uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
|
571
|
-
|
572
|
-
if (balance < premium) {
|
573
|
-
revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
|
518
|
+
// step 2: push distribution fee to distribution wallet
|
519
|
+
if (premium.distributionFeeAndCommissionAmount.gtz()) {
|
520
|
+
tokenHandler.pushToken(distributionWallet, premium.distributionFeeAndCommissionAmount);
|
574
521
|
}
|
575
522
|
|
576
|
-
|
577
|
-
|
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);
|
578
526
|
}
|
579
527
|
}
|
580
|
-
|
581
|
-
|
582
528
|
function _policyHolderPolicyActivated(
|
583
529
|
NftId policyNftId,
|
584
530
|
Timestamp activateAt
|
@@ -637,21 +583,6 @@ contract PolicyService is
|
|
637
583
|
}
|
638
584
|
|
639
585
|
|
640
|
-
function _getTokenHandler(
|
641
|
-
InstanceReader instanceReader,
|
642
|
-
NftId productNftId
|
643
|
-
)
|
644
|
-
internal
|
645
|
-
virtual
|
646
|
-
view
|
647
|
-
returns (
|
648
|
-
TokenHandler tokenHandler
|
649
|
-
)
|
650
|
-
{
|
651
|
-
tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
652
|
-
}
|
653
|
-
|
654
|
-
|
655
586
|
function _getDistributionNftAndWallets(
|
656
587
|
InstanceReader instanceReader,
|
657
588
|
NftId productNftId
|
@@ -666,17 +597,45 @@ contract PolicyService is
|
|
666
597
|
)
|
667
598
|
{
|
668
599
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
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
|
+
}
|
673
607
|
}
|
674
608
|
|
675
609
|
|
676
|
-
function
|
677
|
-
|
678
|
-
|
679
|
-
|
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
|
+
}
|
680
639
|
}
|
681
640
|
|
682
641
|
|