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