@etherisc/gif-next 0.0.2-eadf4ad-726 → 0.0.2-eae5e95-691
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 +51 -5
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1415 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +230 -545
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +315 -432
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +120 -109
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +214 -290
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +215 -94
- 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 +1551 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2090 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1484 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1244 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1605 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2108 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +113 -97
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +171 -85
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +120 -207
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1653 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +850 -366
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +245 -229
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +106 -79
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1212 -381
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1052 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +783 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +920 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +966 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +722 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1312 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +470 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +494 -317
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +186 -87
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +256 -31
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +235 -375
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +460 -254
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +269 -565
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +572 -569
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +112 -93
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +117 -264
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +99 -76
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1186 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +329 -284
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +141 -90
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +54 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +196 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +354 -80
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +154 -86
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +355 -209
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +44 -57
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +418 -397
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +124 -121
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +233 -330
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +128 -93
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +377 -431
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +391 -45
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +123 -64
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +0 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +789 -60
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1886 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +179 -185
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +86 -74
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -138
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +136 -271
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1335 -198
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +814 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +474 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +105 -114
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1335 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +46 -14
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +36 -1
- 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 +49 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +842 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +26 -55
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +68 -85
- 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 +55 -101
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +362 -7
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1460 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +573 -53
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1901 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +776 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +658 -176
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +109 -66
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +121 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +39 -34
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -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 +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +596 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +289 -0
- package/contracts/authorization/IAccess.sol +49 -0
- package/contracts/authorization/IAccessAdmin.sol +137 -0
- package/contracts/authorization/IAuthorization.sol +60 -0
- package/contracts/authorization/IServiceAuthorization.sol +40 -0
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +106 -0
- package/contracts/distribution/BasicDistribution.sol +139 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +154 -154
- package/contracts/distribution/DistributionService.sol +175 -172
- package/contracts/distribution/DistributionServiceManager.sol +8 -23
- package/contracts/distribution/IDistributionComponent.sol +28 -47
- package/contracts/distribution/IDistributionService.sol +24 -10
- 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 +412 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +33 -44
- package/contracts/instance/IInstanceService.sol +32 -33
- package/contracts/instance/Instance.sol +131 -122
- package/contracts/instance/InstanceAdmin.sol +277 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
- package/contracts/instance/InstanceReader.sol +194 -67
- package/contracts/instance/InstanceService.sol +243 -134
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +142 -66
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +111 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
- package/contracts/instance/module/IAccess.sol +2 -10
- package/contracts/instance/module/IBundle.sol +1 -4
- package/contracts/instance/module/IComponents.sol +21 -11
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +31 -25
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/BasicOracle.sol +47 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +33 -0
- package/contracts/oracle/IOracleService.sol +66 -0
- package/contracts/oracle/Oracle.sol +156 -0
- package/contracts/oracle/OracleService.sol +291 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +154 -0
- package/contracts/pool/BasicPoolAuthorization.sol +57 -0
- package/contracts/pool/BundleService.sol +278 -201
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +44 -19
- package/contracts/pool/IPoolComponent.sol +27 -73
- package/contracts/pool/IPoolService.sol +93 -40
- package/contracts/pool/Pool.sol +186 -153
- package/contracts/pool/PoolService.sol +357 -236
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +148 -84
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +53 -0
- package/contracts/product/BasicProductAuthorization.sol +42 -0
- package/contracts/product/ClaimService.sol +293 -145
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +2 -1
- package/contracts/product/IClaimService.sol +35 -5
- package/contracts/product/IPolicyService.sol +38 -38
- package/contracts/product/IPricingService.sol +13 -11
- package/contracts/product/IProductComponent.sol +28 -10
- package/contracts/product/{IProductService.sol → IRiskService.sol} +2 -9
- package/contracts/product/PolicyService.sol +504 -199
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +103 -82
- package/contracts/product/PricingServiceManager.sol +5 -8
- package/contracts/product/Product.sol +222 -146
- package/contracts/product/RiskService.sol +96 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -36
- package/contracts/registry/IRegistry.sol +85 -22
- package/contracts/registry/IRegistryService.sol +10 -6
- package/contracts/registry/ITransferInterceptor.sol +0 -1
- package/contracts/registry/Registry.sol +433 -187
- package/contracts/registry/RegistryAdmin.sol +448 -0
- package/contracts/registry/RegistryService.sol +76 -66
- package/contracts/registry/RegistryServiceManager.sol +6 -25
- package/contracts/registry/ReleaseLifecycle.sol +30 -0
- package/contracts/registry/ReleaseRegistry.sol +501 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +194 -0
- package/contracts/registry/TokenRegistry.sol +261 -62
- package/contracts/shared/Component.sol +153 -148
- package/contracts/shared/ComponentService.sol +688 -94
- package/contracts/shared/ComponentServiceManager.sol +38 -0
- package/contracts/shared/ComponentVerifyingService.sol +126 -0
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +25 -41
- package/contracts/shared/IComponentService.sol +120 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
- package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
- package/contracts/shared/INftOwnable.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -17
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/IService.sol +9 -2
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
- package/contracts/shared/InstanceLinkedComponent.sol +213 -0
- package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
- package/contracts/shared/Lifecycle.sol +88 -0
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +27 -22
- package/contracts/shared/PolicyHolder.sol +18 -50
- package/contracts/shared/Registerable.sol +21 -11
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +48 -36
- package/contracts/shared/TokenHandler.sol +112 -8
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +168 -0
- package/contracts/staking/IStakingService.sol +103 -48
- package/contracts/staking/StakeManagerLib.sol +224 -0
- package/contracts/staking/Staking.sol +497 -0
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +52 -0
- package/contracts/staking/StakingReader.sol +190 -0
- package/contracts/staking/StakingService.sol +273 -49
- package/contracts/staking/StakingServiceManager.sol +11 -7
- package/contracts/staking/StakingStore.sol +605 -0
- package/contracts/staking/TargetManagerLib.sol +211 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +44 -3
- package/contracts/type/Blocknumber.sol +26 -3
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +17 -16
- package/contracts/type/NftId.sol +15 -16
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +176 -62
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +2 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +16 -2
- package/contracts/type/RoleId.sol +98 -75
- package/contracts/type/Seconds.sol +48 -1
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +41 -2
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +17 -3
- package/contracts/type/UFixed.sol +38 -9
- package/contracts/type/Version.sol +4 -2
- package/contracts/{shared → upgradeability}/ProxyManager.sol +76 -39
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +9 -5
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -864
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -679
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -238
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -846
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -598
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
- package/contracts/instance/base/Lifecycle.sol +0 -121
- package/contracts/instance/module/ISetup.sol +0 -33
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/product/ProductService.sol +0 -212
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/RegistryAccessManager.sol +0 -132
- package/contracts/registry/ReleaseManager.sol +0 -382
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,9 +1,8 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
5
|
import {NftId} from "../type/NftId.sol";
|
6
|
-
import {Fee} from "../type/Fee.sol";
|
7
6
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
8
7
|
import {IService} from "../shared/IService.sol";
|
9
8
|
import {UFixed} from "../type/UFixed.sol";
|
@@ -13,6 +12,7 @@ import {Timestamp} from "../type/Timestamp.sol";
|
|
13
12
|
|
14
13
|
|
15
14
|
interface IDistributionService is IService {
|
15
|
+
|
16
16
|
error ErrorDistributionServiceCallerNotRegistered(address caller);
|
17
17
|
error ErrorIDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
|
18
18
|
error ErrorIDistributionServiceCallerNotDistributor(address caller);
|
@@ -25,15 +25,17 @@ interface IDistributionService is IService {
|
|
25
25
|
error ErrorIDistributionServiceExpirationInvalid(Timestamp expiryAt);
|
26
26
|
error ErrorIDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
|
27
27
|
error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
|
28
|
-
|
28
|
+
|
29
|
+
error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
30
|
+
|
31
|
+
error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
|
32
|
+
error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
|
33
|
+
|
29
34
|
error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
|
30
35
|
error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
|
31
36
|
|
32
|
-
|
33
|
-
|
34
|
-
Fee memory distributionFee
|
35
|
-
) external;
|
36
|
-
|
37
|
+
event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
|
38
|
+
|
37
39
|
function createDistributorType(
|
38
40
|
string memory name,
|
39
41
|
UFixed minDiscountPercentage,
|
@@ -72,16 +74,28 @@ interface IDistributionService is IService {
|
|
72
74
|
external
|
73
75
|
returns (ReferralId referralId);
|
74
76
|
|
77
|
+
/// @dev callback from product service when a referral is used.
|
78
|
+
/// Calling this will increment the referral usage counter.
|
79
|
+
function processReferral(
|
80
|
+
NftId distributionNftId,
|
81
|
+
ReferralId referralId
|
82
|
+
) external;
|
83
|
+
|
75
84
|
/// @dev callback from product service when selling a policy for a specific referralId
|
76
85
|
function processSale(
|
77
86
|
NftId distributionNftId,
|
78
87
|
ReferralId referralId,
|
79
|
-
IPolicy.
|
80
|
-
Amount transferredDistributionFeeAmount
|
88
|
+
IPolicy.PremiumInfo memory premium
|
81
89
|
) external;
|
82
90
|
|
83
91
|
function referralIsValid(
|
84
92
|
NftId distributorNftId,
|
85
93
|
ReferralId referralId
|
86
94
|
) external view returns (bool isValid);
|
95
|
+
|
96
|
+
/// @dev Withdraw commission for the distributor
|
97
|
+
/// @param distributorNftId the distributor Nft Id
|
98
|
+
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
99
|
+
/// @return withdrawnAmount the effective withdrawn amount
|
100
|
+
function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
|
87
101
|
}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
type DamageLevel is uint8;
|
5
|
+
|
6
|
+
// type bindings
|
7
|
+
using {
|
8
|
+
DamageLevelLib.eq,
|
9
|
+
DamageLevelLib.eqz,
|
10
|
+
DamageLevelLib.toInt
|
11
|
+
} for DamageLevel global;
|
12
|
+
|
13
|
+
// solhint-disable-next-line func-name-mixedcase
|
14
|
+
function DAMAGE_SMALL() pure returns (DamageLevel) {
|
15
|
+
return DamageLevel.wrap(1);
|
16
|
+
}
|
17
|
+
|
18
|
+
// solhint-disable-next-line func-name-mixedcase
|
19
|
+
function DAMAGE_MEDIUM() pure returns (DamageLevel) {
|
20
|
+
return DamageLevel.wrap(2);
|
21
|
+
}
|
22
|
+
|
23
|
+
// solhint-disable-next-line func-name-mixedcase
|
24
|
+
function DAMAGE_LARGE() pure returns (DamageLevel) {
|
25
|
+
return DamageLevel.wrap(3);
|
26
|
+
}
|
27
|
+
|
28
|
+
library DamageLevelLib {
|
29
|
+
|
30
|
+
error ErrorDamageLeveLibInvalidDamageLevel(uint8 damageLevel);
|
31
|
+
|
32
|
+
function zero() internal pure returns (DamageLevel) {
|
33
|
+
return DamageLevel.wrap(0);
|
34
|
+
}
|
35
|
+
|
36
|
+
function toDamageLevel(uint8 damage) internal pure returns (DamageLevel) {
|
37
|
+
if (damage == 1) {
|
38
|
+
return DAMAGE_SMALL();
|
39
|
+
} else if (damage == 2) {
|
40
|
+
return DAMAGE_MEDIUM();
|
41
|
+
} else if (damage == 3) {
|
42
|
+
return DAMAGE_LARGE();
|
43
|
+
} else {
|
44
|
+
revert ErrorDamageLeveLibInvalidDamageLevel(damage);
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
function toInt(DamageLevel damageLevel) internal pure returns (uint8) {
|
49
|
+
return uint8(DamageLevel.unwrap(damageLevel));
|
50
|
+
}
|
51
|
+
|
52
|
+
function eq(DamageLevel a, DamageLevel b) internal pure returns (bool) {
|
53
|
+
return DamageLevel.unwrap(a) == DamageLevel.unwrap(b);
|
54
|
+
}
|
55
|
+
|
56
|
+
function eqz(DamageLevel a) internal pure returns (bool) {
|
57
|
+
return DamageLevel.unwrap(a) == 0;
|
58
|
+
}
|
59
|
+
}
|
@@ -0,0 +1,75 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Amount, AmountLib} from "../../type/Amount.sol";
|
5
|
+
import {BasicPool} from "../../pool/BasicPool.sol";
|
6
|
+
import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
|
7
|
+
import {Fee} from "../../type/Fee.sol";
|
8
|
+
import {IAuthorization} from "../../authorization/IAuthorization.sol";
|
9
|
+
import {NftId} from "../../type/NftId.sol";
|
10
|
+
import {Seconds} from "../../type/Timestamp.sol";
|
11
|
+
import {UFixed} from "../../type/UFixed.sol";
|
12
|
+
|
13
|
+
contract FirePool is
|
14
|
+
BasicPool
|
15
|
+
{
|
16
|
+
|
17
|
+
constructor(
|
18
|
+
address registry,
|
19
|
+
NftId instanceNftId,
|
20
|
+
string memory componentName,
|
21
|
+
address token,
|
22
|
+
IAuthorization authorization
|
23
|
+
)
|
24
|
+
{
|
25
|
+
address initialOwner = msg.sender;
|
26
|
+
_intialize(
|
27
|
+
registry,
|
28
|
+
instanceNftId,
|
29
|
+
componentName,
|
30
|
+
token,
|
31
|
+
authorization,
|
32
|
+
initialOwner);
|
33
|
+
}
|
34
|
+
|
35
|
+
function _intialize(
|
36
|
+
address registry,
|
37
|
+
NftId instanceNftId,
|
38
|
+
string memory componentName,
|
39
|
+
address token,
|
40
|
+
IAuthorization authorization,
|
41
|
+
address initialOwner
|
42
|
+
)
|
43
|
+
internal
|
44
|
+
initializer
|
45
|
+
{
|
46
|
+
_initializeBasicPool(
|
47
|
+
registry,
|
48
|
+
instanceNftId,
|
49
|
+
authorization,
|
50
|
+
token,
|
51
|
+
componentName,
|
52
|
+
initialOwner);
|
53
|
+
}
|
54
|
+
|
55
|
+
function createBundle(
|
56
|
+
Fee memory fee,
|
57
|
+
Amount initialAmount,
|
58
|
+
Seconds lifetime
|
59
|
+
)
|
60
|
+
external
|
61
|
+
virtual
|
62
|
+
restricted()
|
63
|
+
returns(NftId bundleNftId, Amount netStakedAmount)
|
64
|
+
{
|
65
|
+
address owner = msg.sender;
|
66
|
+
bundleNftId = _createBundle(
|
67
|
+
owner,
|
68
|
+
fee,
|
69
|
+
lifetime,
|
70
|
+
"" // filter
|
71
|
+
);
|
72
|
+
netStakedAmount = _stake(bundleNftId, initialAmount);
|
73
|
+
}
|
74
|
+
|
75
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
4
|
+
pragma solidity ^0.8.20;
|
5
|
+
|
6
|
+
import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
|
7
|
+
import {FirePool} from "./FirePool.sol";
|
8
|
+
import {IAccess} from "../../../contracts/authorization/IAccess.sol";
|
9
|
+
import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
|
10
|
+
|
11
|
+
contract FirePoolAuthorization
|
12
|
+
is BasicPoolAuthorization
|
13
|
+
{
|
14
|
+
|
15
|
+
constructor(string memory poolName)
|
16
|
+
BasicPoolAuthorization(poolName)
|
17
|
+
{}
|
18
|
+
|
19
|
+
|
20
|
+
function _setupTargetAuthorizations()
|
21
|
+
internal
|
22
|
+
virtual override
|
23
|
+
{
|
24
|
+
super._setupTargetAuthorizations();
|
25
|
+
IAccess.FunctionInfo[] storage functions;
|
26
|
+
|
27
|
+
// authorize public role (open access to any account, only allows to lock target)
|
28
|
+
functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
|
29
|
+
// TODO: FirePool.createBundle must require a custom role (e.g. INVESTOR) instead of PUBLIC_ROLE
|
30
|
+
_authorize(functions, FirePool.createBundle.selector, "createBundle");
|
31
|
+
}
|
32
|
+
|
33
|
+
}
|
34
|
+
|
@@ -0,0 +1,412 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {ACTIVE, PAUSED} from "../../type/StateId.sol";
|
5
|
+
import {Amount, AmountLib} from "../../type/Amount.sol";
|
6
|
+
import {BasicProduct} from "../../product/BasicProduct.sol";
|
7
|
+
import {ClaimId} from "../../type/ClaimId.sol";
|
8
|
+
import {DamageLevel, DAMAGE_SMALL, DAMAGE_MEDIUM, DAMAGE_LARGE} from "./DamageLevel.sol";
|
9
|
+
import {IAuthorization} from "../../authorization/IAuthorization.sol";
|
10
|
+
import {IPolicy} from "../../instance/module/IPolicy.sol";
|
11
|
+
import {NftId} from "../../type/NftId.sol";
|
12
|
+
import {PayoutId} from "../../type/PayoutId.sol";
|
13
|
+
import {POLICY} from "../../type/ObjectType.sol";
|
14
|
+
import {ReferralLib} from "../../type/Referral.sol";
|
15
|
+
import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
|
16
|
+
import {Seconds} from "../../type/Seconds.sol";
|
17
|
+
import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
|
18
|
+
import {UFixed, UFixedLib} from "../../type/UFixed.sol";
|
19
|
+
|
20
|
+
// solhint-disable-next-line func-name-mixedcase
|
21
|
+
function HALF_YEAR() pure returns (Seconds) {
|
22
|
+
return Seconds.wrap(180 * 86400);
|
23
|
+
}
|
24
|
+
|
25
|
+
// solhint-disable-next-line func-name-mixedcase
|
26
|
+
function ONE_YEAR() pure returns (Seconds) {
|
27
|
+
return Seconds.wrap(360 * 86400);
|
28
|
+
}
|
29
|
+
|
30
|
+
/// @dev This is the product component for the fire insurance example.
|
31
|
+
/// It show how to insure a house for a given suminsured in a city.
|
32
|
+
/// The risk is based on the city.
|
33
|
+
/// If a fire is reported in the city, the policy holder is able to submit a claim and get a payout.
|
34
|
+
contract FireProduct is
|
35
|
+
BasicProduct
|
36
|
+
{
|
37
|
+
struct Fire {
|
38
|
+
string cityName;
|
39
|
+
DamageLevel damageLevel;
|
40
|
+
Timestamp reportedAt;
|
41
|
+
}
|
42
|
+
|
43
|
+
error ErrorFireProductCityUnknown(string cityName);
|
44
|
+
error ErrorFireProductTimestampInFuture();
|
45
|
+
error ErrorFireProductFireAlreadyReported();
|
46
|
+
error ErrorFireProductAlreadyClaimed();
|
47
|
+
error ErrorFireProductPolicyNotActive(NftId policyNftId);
|
48
|
+
error ErrorFireProductPolicyNotYetActive(NftId policyNftId, Timestamp activateAt);
|
49
|
+
error ErrorFireProductPolicyExpired(NftId policyNftId, Timestamp expiredAt);
|
50
|
+
error ErrorFireProductUnknownDamageLevel(DamageLevel damageLevel);
|
51
|
+
error ErrorFireProductFireUnknown(uint256 fireId);
|
52
|
+
error ErrorFireProductNotPolicyOwner(NftId nftId, address owner);
|
53
|
+
error ErrorFireProductFireNotInCoveredCity(uint256 fireId, string cityName);
|
54
|
+
|
55
|
+
string[] private _cities;
|
56
|
+
// map from city name to the RiskId
|
57
|
+
mapping(string cityName => RiskId risk) private _riskMapping;
|
58
|
+
|
59
|
+
// map from city name to the damage level and the time of the report
|
60
|
+
mapping(uint256 fireId => Fire) private _fires;
|
61
|
+
mapping(uint256 fireId => mapping (NftId policyId => bool claimed)) private _claimed;
|
62
|
+
|
63
|
+
constructor(
|
64
|
+
address registry,
|
65
|
+
NftId instanceNftid,
|
66
|
+
string memory componentName,
|
67
|
+
address token,
|
68
|
+
address pool,
|
69
|
+
IAuthorization authorization
|
70
|
+
)
|
71
|
+
{
|
72
|
+
address initialOwner = msg.sender;
|
73
|
+
|
74
|
+
_initialize(
|
75
|
+
registry,
|
76
|
+
instanceNftid,
|
77
|
+
componentName,
|
78
|
+
token,
|
79
|
+
pool,
|
80
|
+
authorization,
|
81
|
+
initialOwner);
|
82
|
+
}
|
83
|
+
|
84
|
+
function _initialize(
|
85
|
+
address registry,
|
86
|
+
NftId instanceNftid,
|
87
|
+
string memory componentName,
|
88
|
+
address token,
|
89
|
+
address pool,
|
90
|
+
IAuthorization authorization,
|
91
|
+
address initialOwner
|
92
|
+
)
|
93
|
+
internal
|
94
|
+
initializer
|
95
|
+
{
|
96
|
+
_initializeBasicProduct(
|
97
|
+
registry,
|
98
|
+
instanceNftid,
|
99
|
+
authorization,
|
100
|
+
initialOwner,
|
101
|
+
componentName,
|
102
|
+
token,
|
103
|
+
false, // is interceptor
|
104
|
+
false, // has distribution
|
105
|
+
0); // number of oracles
|
106
|
+
}
|
107
|
+
|
108
|
+
function cities() public view returns (uint256) {
|
109
|
+
return _cities.length;
|
110
|
+
}
|
111
|
+
|
112
|
+
function city(uint256 idx) public view returns (string memory) {
|
113
|
+
return _cities[idx];
|
114
|
+
}
|
115
|
+
|
116
|
+
function riskId(string memory cityName) public view returns (RiskId) {
|
117
|
+
return _riskMapping[cityName];
|
118
|
+
}
|
119
|
+
|
120
|
+
function pauseCity(
|
121
|
+
string memory cityName
|
122
|
+
)
|
123
|
+
public
|
124
|
+
restricted()
|
125
|
+
{
|
126
|
+
if (_riskMapping[cityName].eqz()) {
|
127
|
+
revert ErrorFireProductCityUnknown(cityName);
|
128
|
+
}
|
129
|
+
|
130
|
+
_updateRiskState(
|
131
|
+
_riskMapping[cityName],
|
132
|
+
PAUSED()
|
133
|
+
);
|
134
|
+
}
|
135
|
+
|
136
|
+
function unpauseCity(
|
137
|
+
string memory cityName
|
138
|
+
)
|
139
|
+
public
|
140
|
+
restricted()
|
141
|
+
{
|
142
|
+
if (_riskMapping[cityName].eqz()) {
|
143
|
+
revert ErrorFireProductCityUnknown(cityName);
|
144
|
+
}
|
145
|
+
|
146
|
+
_updateRiskState(
|
147
|
+
_riskMapping[cityName],
|
148
|
+
ACTIVE()
|
149
|
+
);
|
150
|
+
}
|
151
|
+
|
152
|
+
function calculatePremium(
|
153
|
+
string memory cityName,
|
154
|
+
Amount sumInsured,
|
155
|
+
Seconds lifetime,
|
156
|
+
NftId bundleNftId
|
157
|
+
)
|
158
|
+
public
|
159
|
+
view
|
160
|
+
returns (Amount premiumAmount)
|
161
|
+
{
|
162
|
+
RiskId risk = _riskMapping[cityName];
|
163
|
+
if (risk.eqz()) {
|
164
|
+
revert ErrorFireProductCityUnknown(cityName);
|
165
|
+
}
|
166
|
+
premiumAmount = calculatePremium(
|
167
|
+
sumInsured,
|
168
|
+
risk,
|
169
|
+
lifetime,
|
170
|
+
"",
|
171
|
+
bundleNftId,
|
172
|
+
ReferralLib.zero());
|
173
|
+
}
|
174
|
+
|
175
|
+
function calculateNetPremium(
|
176
|
+
Amount sumInsured,
|
177
|
+
RiskId,
|
178
|
+
Seconds lifetime,
|
179
|
+
bytes memory
|
180
|
+
)
|
181
|
+
external
|
182
|
+
view
|
183
|
+
virtual override
|
184
|
+
returns (Amount netPremiumAmount)
|
185
|
+
{
|
186
|
+
UFixed numDays = UFixedLib.toUFixed(lifetime.toInt() / 86400);
|
187
|
+
// to simplify time calculation we assume 360 days per year
|
188
|
+
UFixed pctOfYear = numDays / UFixedLib.toUFixed(360);
|
189
|
+
Amount premiumPerYear = AmountLib.toAmount(sumInsured.toInt() / 20);
|
190
|
+
return premiumPerYear.multiplyWith(pctOfYear);
|
191
|
+
}
|
192
|
+
|
193
|
+
function createApplication(
|
194
|
+
string memory cityName,
|
195
|
+
Amount sumInsured,
|
196
|
+
Seconds lifetime,
|
197
|
+
NftId bundleNftId
|
198
|
+
)
|
199
|
+
public
|
200
|
+
restricted()
|
201
|
+
returns (NftId policyNftId)
|
202
|
+
{
|
203
|
+
address applicationOwner = msg.sender;
|
204
|
+
RiskId risk = initializeCity(cityName);
|
205
|
+
|
206
|
+
Amount premiumAmount = calculatePremium(
|
207
|
+
sumInsured,
|
208
|
+
risk,
|
209
|
+
lifetime,
|
210
|
+
"",
|
211
|
+
bundleNftId,
|
212
|
+
ReferralLib.zero());
|
213
|
+
|
214
|
+
return _createApplication(
|
215
|
+
applicationOwner,
|
216
|
+
risk,
|
217
|
+
sumInsured,
|
218
|
+
premiumAmount,
|
219
|
+
lifetime,
|
220
|
+
bundleNftId,
|
221
|
+
ReferralLib.zero(),
|
222
|
+
""
|
223
|
+
);
|
224
|
+
}
|
225
|
+
|
226
|
+
function initializeCity(
|
227
|
+
string memory cityName
|
228
|
+
)
|
229
|
+
public
|
230
|
+
returns (RiskId risk)
|
231
|
+
{
|
232
|
+
if (! _riskMapping[cityName].eqz()) {
|
233
|
+
return _riskMapping[cityName];
|
234
|
+
}
|
235
|
+
_cities.push(cityName);
|
236
|
+
risk = RiskIdLib.toRiskId(cityName);
|
237
|
+
_createRisk(risk, "");
|
238
|
+
_riskMapping[cityName] = risk;
|
239
|
+
}
|
240
|
+
|
241
|
+
/// @dev Calling this method will lock the sum insured amount in the pool and activate the policy at the given time.
|
242
|
+
/// It will also collect the tokens payment for the premium. An approval with the correct amount towards the TokenHandler of the product is therefor required.
|
243
|
+
function createPolicy(
|
244
|
+
NftId policyNftId,
|
245
|
+
Timestamp activateAt
|
246
|
+
)
|
247
|
+
public
|
248
|
+
restricted()
|
249
|
+
onlyOwner()
|
250
|
+
{
|
251
|
+
_createPolicy(policyNftId, activateAt);
|
252
|
+
_collectPremium(policyNftId, activateAt);
|
253
|
+
}
|
254
|
+
|
255
|
+
/// @dev Decline the policy application
|
256
|
+
function decline(
|
257
|
+
NftId policyNftId
|
258
|
+
)
|
259
|
+
public
|
260
|
+
restricted()
|
261
|
+
onlyOwner()
|
262
|
+
{
|
263
|
+
_decline(policyNftId);
|
264
|
+
}
|
265
|
+
|
266
|
+
function expire(
|
267
|
+
NftId policyNftId,
|
268
|
+
Timestamp expireAt
|
269
|
+
)
|
270
|
+
public
|
271
|
+
restricted()
|
272
|
+
onlyOwner()
|
273
|
+
returns (Timestamp)
|
274
|
+
{
|
275
|
+
return _expire(policyNftId, expireAt);
|
276
|
+
}
|
277
|
+
|
278
|
+
function close(
|
279
|
+
NftId policyNftId
|
280
|
+
)
|
281
|
+
public
|
282
|
+
restricted()
|
283
|
+
onlyOwner()
|
284
|
+
{
|
285
|
+
_close(policyNftId);
|
286
|
+
}
|
287
|
+
|
288
|
+
function reportFire(
|
289
|
+
uint256 fireId,
|
290
|
+
string memory cityName,
|
291
|
+
DamageLevel damageLevel,
|
292
|
+
Timestamp reportedAt
|
293
|
+
)
|
294
|
+
public
|
295
|
+
restricted()
|
296
|
+
{
|
297
|
+
if (_riskMapping[cityName].eqz()) {
|
298
|
+
revert ErrorFireProductCityUnknown(cityName);
|
299
|
+
}
|
300
|
+
|
301
|
+
if (reportedAt > TimestampLib.blockTimestamp()) {
|
302
|
+
revert ErrorFireProductTimestampInFuture();
|
303
|
+
}
|
304
|
+
|
305
|
+
if (! _fires[fireId].reportedAt.eqz()) {
|
306
|
+
revert ErrorFireProductFireAlreadyReported();
|
307
|
+
}
|
308
|
+
|
309
|
+
_fires[fireId] = Fire({
|
310
|
+
cityName: cityName,
|
311
|
+
damageLevel: damageLevel,
|
312
|
+
reportedAt: reportedAt
|
313
|
+
});
|
314
|
+
}
|
315
|
+
|
316
|
+
function fire(uint256 fireId) public view returns (Fire memory) {
|
317
|
+
return _fires[fireId];
|
318
|
+
}
|
319
|
+
|
320
|
+
function submitClaim(
|
321
|
+
NftId policyNftId,
|
322
|
+
uint256 fireId
|
323
|
+
)
|
324
|
+
public
|
325
|
+
restricted()
|
326
|
+
onlyNftOwner(policyNftId)
|
327
|
+
onlyNftOfType(policyNftId, POLICY())
|
328
|
+
returns (ClaimId claimId, PayoutId payoutId)
|
329
|
+
{
|
330
|
+
IPolicy.PolicyInfo memory policyInfo = _getInstanceReader().getPolicyInfo(policyNftId);
|
331
|
+
_checkClaimConditions(policyNftId, policyInfo, fireId);
|
332
|
+
|
333
|
+
Fire memory theFire = _fires[fireId];
|
334
|
+
_claimed[fireId][policyNftId] = true;
|
335
|
+
|
336
|
+
Amount claimAmount = _getClaimAmount(policyNftId, policyInfo.sumInsuredAmount, theFire.damageLevel);
|
337
|
+
|
338
|
+
claimId = _submitClaim(policyNftId, claimAmount, abi.encodePacked(fireId));
|
339
|
+
_confirmClaim(policyNftId, claimId, claimAmount, "");
|
340
|
+
|
341
|
+
payoutId = _createPayout(policyNftId, claimId, claimAmount, "");
|
342
|
+
_processPayout(policyNftId, payoutId);
|
343
|
+
}
|
344
|
+
|
345
|
+
function _checkClaimConditions(
|
346
|
+
NftId policyNftId,
|
347
|
+
IPolicy.PolicyInfo memory policyInfo,
|
348
|
+
uint256 fireId
|
349
|
+
)
|
350
|
+
internal
|
351
|
+
view
|
352
|
+
{
|
353
|
+
// check fire exists
|
354
|
+
if (_fires[fireId].reportedAt.eqz()) {
|
355
|
+
revert ErrorFireProductFireUnknown(fireId);
|
356
|
+
}
|
357
|
+
|
358
|
+
// check fire is in same city as policy coverage
|
359
|
+
if (_riskMapping[_fires[fireId].cityName] != policyInfo.riskId) {
|
360
|
+
revert ErrorFireProductFireNotInCoveredCity(fireId, _fires[fireId].cityName);
|
361
|
+
}
|
362
|
+
|
363
|
+
// check policy has not been claimed yet for this fire
|
364
|
+
if (_claimed[fireId][policyNftId]) {
|
365
|
+
revert ErrorFireProductAlreadyClaimed();
|
366
|
+
}
|
367
|
+
|
368
|
+
Fire memory theFire = _fires[fireId];
|
369
|
+
|
370
|
+
// check fire is during policy lifetime
|
371
|
+
if (theFire.reportedAt < policyInfo.activatedAt) {
|
372
|
+
revert ErrorFireProductPolicyNotYetActive(policyNftId, policyInfo.activatedAt);
|
373
|
+
}
|
374
|
+
|
375
|
+
if (theFire.reportedAt >= policyInfo.expiredAt) {
|
376
|
+
revert ErrorFireProductPolicyExpired(policyNftId, policyInfo.expiredAt);
|
377
|
+
}
|
378
|
+
}
|
379
|
+
|
380
|
+
function _getClaimAmount(
|
381
|
+
NftId policyNftId,
|
382
|
+
Amount sumInsured,
|
383
|
+
DamageLevel damageLevel
|
384
|
+
)
|
385
|
+
internal
|
386
|
+
view
|
387
|
+
returns (Amount)
|
388
|
+
{
|
389
|
+
Amount claimAmount = sumInsured.multiplyWith(_damageLevelToPayoutPercentage(damageLevel));
|
390
|
+
Amount maxPayoutRemaining = _getInstanceReader().getRemainingClaimableAmount(policyNftId);
|
391
|
+
|
392
|
+
// if payout is higher than the remaining maximum payout, then claim what is remaining
|
393
|
+
if (maxPayoutRemaining < claimAmount) {
|
394
|
+
return maxPayoutRemaining;
|
395
|
+
}
|
396
|
+
|
397
|
+
return claimAmount;
|
398
|
+
}
|
399
|
+
|
400
|
+
function _damageLevelToPayoutPercentage(DamageLevel damageLevel) internal pure returns (UFixed) {
|
401
|
+
if (damageLevel.eq(DAMAGE_SMALL())) {
|
402
|
+
return UFixedLib.toUFixed(25, -2);
|
403
|
+
} else if (damageLevel.eq(DAMAGE_MEDIUM())) {
|
404
|
+
return UFixedLib.toUFixed(5, -1);
|
405
|
+
} else if (damageLevel.eq(DAMAGE_LARGE())) {
|
406
|
+
return UFixedLib.toUFixed(1);
|
407
|
+
} else {
|
408
|
+
revert ErrorFireProductUnknownDamageLevel(damageLevel);
|
409
|
+
}
|
410
|
+
}
|
411
|
+
|
412
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {BasicProductAuthorization} from "../../product/BasicProductAuthorization.sol";
|
5
|
+
import {FireProduct} from "./FireProduct.sol";
|
6
|
+
import {IAccess} from "../../../contracts/authorization/IAccess.sol";
|
7
|
+
import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
|
8
|
+
|
9
|
+
|
10
|
+
contract FireProductAuthorization
|
11
|
+
is BasicProductAuthorization
|
12
|
+
{
|
13
|
+
|
14
|
+
constructor(string memory poolName)
|
15
|
+
BasicProductAuthorization(poolName)
|
16
|
+
{}
|
17
|
+
|
18
|
+
function _setupTargetAuthorizations()
|
19
|
+
internal
|
20
|
+
virtual override
|
21
|
+
{
|
22
|
+
super._setupTargetAuthorizations();
|
23
|
+
IAccess.FunctionInfo[] storage functions;
|
24
|
+
|
25
|
+
// authorize public role (open access to any account, only allows to lock target)
|
26
|
+
functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
|
27
|
+
// fully public functions
|
28
|
+
_authorize(functions, FireProduct.createApplication.selector, "createApplication");
|
29
|
+
|
30
|
+
// only owner
|
31
|
+
_authorize(functions, FireProduct.createPolicy.selector, "createPolicy");
|
32
|
+
_authorize(functions, FireProduct.decline.selector, "decline");
|
33
|
+
_authorize(functions, FireProduct.expire.selector, "expire");
|
34
|
+
_authorize(functions, FireProduct.close.selector, "close");
|
35
|
+
|
36
|
+
// only policy nft owner
|
37
|
+
_authorize(functions, FireProduct.submitClaim.selector, "submitClaim");
|
38
|
+
|
39
|
+
// TODO: add custom role for fire reporter
|
40
|
+
_authorize(functions, FireProduct.reportFire.selector, "reportFire");
|
41
|
+
}
|
42
|
+
|
43
|
+
}
|
44
|
+
|