@etherisc/gif-next 0.0.2-888aabe-141 → 0.0.2-8951ac2-139
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 +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +21 -21
- 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 +2 -2
- 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/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +66 -248
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +24 -222
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +223 -217
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +62 -101
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +24 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -31
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -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/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +71 -71
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +238 -123
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +34 -146
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +30 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +215 -219
- 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 +2 -2
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +59 -235
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- 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 +30 -37
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +27 -219
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -144
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +29 -80
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +36 -284
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +391 -163
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +106 -89
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +26 -95
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +26 -280
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +264 -248
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +35 -82
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +31 -162
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +26 -89
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +3 -225
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +185 -175
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +53 -100
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +184 -119
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -37
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +242 -321
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +50 -101
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +113 -265
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +52 -123
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +3 -225
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -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 +221 -21
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- 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 +419 -82
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +229 -114
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -130
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +22 -73
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- 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 +0 -211
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +164 -192
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +55 -110
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -112
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +92 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -37
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +0 -42
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -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/InitializableCustom.sol/InitializableCustom.dbg.json +1 -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 +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -222
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -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 +6 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +4 -136
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -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 +0 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- 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 +27 -27
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +42 -89
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -138
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +26 -77
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +89 -84
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -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 +37 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -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 +2 -2
- 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 +2 -2
- 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 +50 -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 +2 -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 +23 -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 +39 -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 +14 -65
- 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 +1 -3
- package/contracts/authorization/Authorization.sol +0 -1
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +16 -22
- package/contracts/distribution/DistributionService.sol +68 -20
- package/contracts/distribution/IDistributionComponent.sol +5 -2
- package/contracts/distribution/IDistributionService.sol +18 -2
- 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 +23 -4
- package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
- package/contracts/instance/InstanceReader.sol +32 -7
- package/contracts/instance/InstanceService.sol +60 -36
- package/contracts/instance/InstanceStore.sol +12 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +1 -6
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +22 -22
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +17 -7
- package/contracts/oracle/OracleService.sol +4 -3
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +11 -2
- package/contracts/pool/BundleService.sol +179 -25
- package/contracts/pool/IBundleService.sol +33 -5
- package/contracts/pool/IPoolComponent.sol +6 -2
- package/contracts/pool/IPoolService.sol +36 -26
- package/contracts/pool/Pool.sol +39 -42
- package/contracts/pool/PoolService.sol +155 -82
- package/contracts/product/ApplicationService.sol +41 -23
- package/contracts/product/BasicProduct.sol +3 -32
- package/contracts/product/BasicProductAuthorization.sol +3 -0
- package/contracts/product/ClaimService.sol +116 -45
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +28 -5
- package/contracts/product/IPolicyService.sol +27 -32
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +1 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +280 -182
- package/contracts/product/PricingService.sol +44 -43
- package/contracts/product/Product.sol +67 -51
- package/contracts/product/{ProductService.sol → RiskService.sol} +5 -7
- package/contracts/product/{ProductServiceManager.sol → RiskServiceManager.sol} +8 -8
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +49 -15
- package/contracts/registry/Registry.sol +321 -195
- package/contracts/registry/RegistryAdmin.sol +150 -51
- package/contracts/registry/RegistryService.sol +2 -2
- package/contracts/registry/ReleaseRegistry.sol +12 -8
- package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
- package/contracts/shared/Component.sol +23 -29
- package/contracts/shared/ComponentService.sol +61 -37
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IComponentService.sol +9 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
- package/contracts/shared/IPolicyHolder.sol +0 -9
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +25 -4
- package/contracts/shared/NftOwnable.sol +7 -7
- package/contracts/shared/PolicyHolder.sol +7 -53
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +5 -5
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +10 -26
- package/contracts/staking/StakingService.sol +10 -14
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ObjectType.sol +15 -11
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +1 -0
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +29 -10
- package/contracts/upgradeability/ProxyManager.sol +1 -1
- package/package.json +1 -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/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
@@ -50,8 +50,8 @@ contract PricingService is
|
|
50
50
|
address authority
|
51
51
|
) = abi.decode(data, (address, address, address));
|
52
52
|
|
53
|
-
|
54
|
-
|
53
|
+
_initializeService(registryAddress, authority, owner);
|
54
|
+
_registerInterface(type(IPricingService).interfaceId);
|
55
55
|
|
56
56
|
_distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
|
57
57
|
}
|
@@ -71,7 +71,7 @@ contract PricingService is
|
|
71
71
|
view
|
72
72
|
virtual override
|
73
73
|
returns (
|
74
|
-
IPolicy.
|
74
|
+
IPolicy.PremiumInfo memory premium
|
75
75
|
)
|
76
76
|
{
|
77
77
|
InstanceReader reader;
|
@@ -84,6 +84,7 @@ contract PricingService is
|
|
84
84
|
IInstance instance
|
85
85
|
) = _getAndVerifyComponentInfo(productNftId, PRODUCT(), false);
|
86
86
|
|
87
|
+
// get instance reader from local instance variable
|
87
88
|
reader = instance.getInstanceReader();
|
88
89
|
|
89
90
|
// calculate net premium
|
@@ -104,19 +105,21 @@ contract PricingService is
|
|
104
105
|
revert ErrorIPricingServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, productInfo.poolNftId);
|
105
106
|
}
|
106
107
|
|
107
|
-
// calculate
|
108
|
+
// calculate fixed fees for product, pool, bundle
|
108
109
|
premium = _getFixedFeeAmounts(
|
109
110
|
netPremiumAmount,
|
110
111
|
productInfo,
|
111
112
|
bundleInfo
|
112
113
|
);
|
113
114
|
|
115
|
+
// calculate variable fees for product, pool, bundle
|
114
116
|
premium = _calculateVariableFeeAmounts(
|
115
117
|
premium,
|
116
118
|
productInfo,
|
117
119
|
bundleInfo
|
118
120
|
);
|
119
121
|
|
122
|
+
// calculate distribution fee and (if applicable) commission
|
120
123
|
premium = _calculateDistributionOwnerFeeAmount(
|
121
124
|
premium,
|
122
125
|
productInfo,
|
@@ -124,18 +127,18 @@ contract PricingService is
|
|
124
127
|
reader
|
125
128
|
);
|
126
129
|
|
130
|
+
// calculate resulting amounts for product, pool, and distribution wallets
|
127
131
|
premium = _calculateTargetWalletAmounts(premium);
|
128
132
|
|
129
133
|
// sanity check to validate the fee calculation
|
130
|
-
if(
|
131
|
-
premium.productFeeAmount
|
134
|
+
if(premium.premiumAmount != premium.productFeeAmount
|
132
135
|
+ premium.distributionFeeAndCommissionAmount
|
133
136
|
+ premium.poolPremiumAndFeeAmount)
|
134
137
|
{
|
135
138
|
revert ErrorPricingServiceTargetWalletAmountsMismatch();
|
136
139
|
}
|
137
140
|
|
138
|
-
if (premium.distributionOwnerFeeFixAmount < productInfo.minDistributionOwnerFee.fixedFee) {
|
141
|
+
if (premium.distributionOwnerFeeFixAmount.toInt() < productInfo.minDistributionOwnerFee.fixedFee) {
|
139
142
|
revert ErrorIPricingServiceFeeCalculationMismatch(
|
140
143
|
premium.distributionFeeFixAmount,
|
141
144
|
premium.distributionFeeVarAmount,
|
@@ -168,64 +171,64 @@ contract PricingService is
|
|
168
171
|
internal
|
169
172
|
pure
|
170
173
|
returns (
|
171
|
-
IPolicy.
|
174
|
+
IPolicy.PremiumInfo memory premium
|
172
175
|
)
|
173
176
|
{
|
174
177
|
// initial premium amount is the net premium
|
175
|
-
premium.netPremiumAmount = netPremiumAmount
|
176
|
-
premium.fullPremiumAmount = netPremiumAmount
|
178
|
+
premium.netPremiumAmount = netPremiumAmount;
|
179
|
+
premium.fullPremiumAmount = netPremiumAmount;
|
177
180
|
|
178
|
-
|
181
|
+
Amount t = AmountLib.toAmount(productInfo.productFee.fixedFee);
|
179
182
|
premium.productFeeFixAmount = t;
|
180
|
-
premium.fullPremiumAmount
|
183
|
+
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
181
184
|
|
182
|
-
t = productInfo.poolFee.fixedFee;
|
185
|
+
t = AmountLib.toAmount(productInfo.poolFee.fixedFee);
|
183
186
|
premium.poolFeeFixAmount = t;
|
184
|
-
premium.fullPremiumAmount
|
187
|
+
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
185
188
|
|
186
|
-
t = bundleInfo.fee.fixedFee;
|
189
|
+
t = AmountLib.toAmount(bundleInfo.fee.fixedFee);
|
187
190
|
premium.bundleFeeFixAmount = t;
|
188
|
-
premium.fullPremiumAmount
|
191
|
+
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
189
192
|
|
190
|
-
t = productInfo.distributionFee.fixedFee;
|
193
|
+
t = AmountLib.toAmount(productInfo.distributionFee.fixedFee);
|
191
194
|
premium.distributionFeeFixAmount = t;
|
192
|
-
premium.fullPremiumAmount
|
195
|
+
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
193
196
|
}
|
194
197
|
|
195
198
|
function _calculateVariableFeeAmounts(
|
196
|
-
IPolicy.
|
199
|
+
IPolicy.PremiumInfo memory premium,
|
197
200
|
IComponents.ProductInfo memory productInfo,
|
198
201
|
IBundle.BundleInfo memory bundleInfo
|
199
202
|
)
|
200
203
|
internal
|
201
204
|
pure
|
202
205
|
returns (
|
203
|
-
IPolicy.
|
206
|
+
IPolicy.PremiumInfo memory intermadiatePremium
|
204
207
|
)
|
205
208
|
{
|
206
|
-
|
209
|
+
Amount netPremiumAmount = premium.netPremiumAmount;
|
207
210
|
|
208
|
-
|
211
|
+
Amount t = netPremiumAmount.multiplyWith(productInfo.productFee.fractionalFee);
|
209
212
|
premium.productFeeVarAmount = t;
|
210
|
-
premium.fullPremiumAmount
|
213
|
+
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
211
214
|
|
212
|
-
t = (
|
215
|
+
t = netPremiumAmount.multiplyWith(productInfo.poolFee.fractionalFee);
|
213
216
|
premium.poolFeeVarAmount = t;
|
214
|
-
premium.fullPremiumAmount
|
217
|
+
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
215
218
|
|
216
|
-
t = (
|
219
|
+
t = netPremiumAmount.multiplyWith(bundleInfo.fee.fractionalFee);
|
217
220
|
premium.bundleFeeVarAmount = t;
|
218
|
-
premium.fullPremiumAmount
|
221
|
+
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
219
222
|
|
220
|
-
t = (
|
223
|
+
t = netPremiumAmount.multiplyWith(productInfo.distributionFee.fractionalFee);
|
221
224
|
premium.distributionFeeVarAmount = t;
|
222
|
-
premium.fullPremiumAmount
|
225
|
+
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
223
226
|
|
224
227
|
return premium;
|
225
228
|
}
|
226
229
|
|
227
230
|
function _calculateDistributionOwnerFeeAmount(
|
228
|
-
IPolicy.
|
231
|
+
IPolicy.PremiumInfo memory premium,
|
229
232
|
IComponents.ProductInfo memory productInfo,
|
230
233
|
// ISetup.DistributionSetupInfo memory distInfo,
|
231
234
|
ReferralId referralId,
|
@@ -233,7 +236,7 @@ contract PricingService is
|
|
233
236
|
)
|
234
237
|
internal
|
235
238
|
view
|
236
|
-
returns (IPolicy.
|
239
|
+
returns (IPolicy.PremiumInfo memory finalPremium)
|
237
240
|
{
|
238
241
|
|
239
242
|
// if the referral is not valid, then the distribution owner gets everything
|
@@ -253,10 +256,10 @@ contract PricingService is
|
|
253
256
|
IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
|
254
257
|
IDistribution.DistributorTypeInfo memory distributorTypeInfo = reader.getDistributorTypeInfo(distributorInfo.distributorType);
|
255
258
|
|
256
|
-
|
259
|
+
Amount commissionAmount = premium.netPremiumAmount.multiplyWith(distributorTypeInfo.commissionPercentage);
|
257
260
|
premium.commissionAmount = commissionAmount;
|
258
|
-
premium.discountAmount =
|
259
|
-
premium.distributionOwnerFeeFixAmount = minDistributionOwnerFee.fixedFee;
|
261
|
+
premium.discountAmount = premium.fullPremiumAmount.multiplyWith(referralInfo.discountPercentage);
|
262
|
+
premium.distributionOwnerFeeFixAmount = AmountLib.toAmount(minDistributionOwnerFee.fixedFee);
|
260
263
|
premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount - commissionAmount - premium.discountAmount;
|
261
264
|
premium.premiumAmount = premium.fullPremiumAmount - premium.discountAmount;
|
262
265
|
}
|
@@ -266,29 +269,27 @@ contract PricingService is
|
|
266
269
|
|
267
270
|
|
268
271
|
function _calculateTargetWalletAmounts(
|
269
|
-
IPolicy.
|
272
|
+
IPolicy.PremiumInfo memory premium
|
270
273
|
)
|
271
274
|
internal
|
272
275
|
virtual
|
273
276
|
view
|
274
277
|
returns (
|
275
|
-
IPolicy.
|
278
|
+
IPolicy.PremiumInfo memory premiumWithTargetWalletAmounts
|
276
279
|
)
|
277
280
|
{
|
278
281
|
// fees for product owner
|
279
|
-
premium.productFeeAmount =
|
280
|
-
premium.productFeeFixAmount + premium.productFeeVarAmount);
|
282
|
+
premium.productFeeAmount = premium.productFeeFixAmount + premium.productFeeVarAmount;
|
281
283
|
|
282
284
|
// fees for distribution owner + distributor commission
|
283
|
-
premium.distributionFeeAndCommissionAmount =
|
285
|
+
premium.distributionFeeAndCommissionAmount =
|
284
286
|
premium.distributionFeeFixAmount + premium.distributionOwnerFeeVarAmount
|
285
|
-
+ premium.commissionAmount
|
287
|
+
+ premium.commissionAmount;
|
286
288
|
|
287
289
|
// net premium + fees for pool owner + bundle owner
|
288
|
-
premium.poolPremiumAndFeeAmount =
|
289
|
-
premium.netPremiumAmount
|
290
|
+
premium.poolPremiumAndFeeAmount = premium.netPremiumAmount
|
290
291
|
+ premium.poolFeeFixAmount + premium.poolFeeVarAmount
|
291
|
-
+ premium.bundleFeeFixAmount + premium.bundleFeeVarAmount
|
292
|
+
+ premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
292
293
|
|
293
294
|
premiumWithTargetWalletAmounts = premium;
|
294
295
|
}
|
@@ -1,8 +1,6 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
|
6
4
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
7
5
|
import {ClaimId} from "../type/ClaimId.sol";
|
8
6
|
import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
|
@@ -12,11 +10,11 @@ import {IApplicationService} from "./IApplicationService.sol";
|
|
12
10
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
13
11
|
import {IComponentService} from "../shared/IComponentService.sol";
|
14
12
|
import {IPolicyService} from "./IPolicyService.sol";
|
15
|
-
import {
|
13
|
+
import {IRiskService} from "./IRiskService.sol";
|
16
14
|
import {IClaimService} from "./IClaimService.sol";
|
17
15
|
import {IPricingService} from "./IPricingService.sol";
|
18
16
|
import {IProductComponent} from "./IProductComponent.sol";
|
19
|
-
import {NftId
|
17
|
+
import {NftId} from "../type/NftId.sol";
|
20
18
|
import {PayoutId} from "../type/PayoutId.sol";
|
21
19
|
import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
|
22
20
|
import {ReferralId} from "../type/Referral.sol";
|
@@ -25,9 +23,6 @@ import {Seconds} from "../type/Seconds.sol";
|
|
25
23
|
import {StateId} from "../type/StateId.sol";
|
26
24
|
import {Timestamp} from "../type/Timestamp.sol";
|
27
25
|
|
28
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
29
|
-
|
30
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
31
26
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
32
27
|
import {IComponents} from "../instance/module/IComponents.sol";
|
33
28
|
import {Pool} from "../pool/Pool.sol";
|
@@ -41,7 +36,7 @@ abstract contract Product is
|
|
41
36
|
bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
|
42
37
|
|
43
38
|
struct ProductStorage {
|
44
|
-
|
39
|
+
IRiskService _riskService;
|
45
40
|
IApplicationService _applicationService;
|
46
41
|
IPolicyService _policyService;
|
47
42
|
IClaimService _claimService;
|
@@ -62,12 +57,12 @@ abstract contract Product is
|
|
62
57
|
NftId bundleNftId,
|
63
58
|
ReferralId referralId
|
64
59
|
)
|
65
|
-
|
60
|
+
public
|
66
61
|
view
|
67
62
|
override
|
68
63
|
returns (Amount premiumAmount)
|
69
64
|
{
|
70
|
-
IPolicy.
|
65
|
+
IPolicy.PremiumInfo memory premium = _getProductStorage()._pricingService.calculatePremium(
|
71
66
|
getNftId(),
|
72
67
|
riskId,
|
73
68
|
sumInsuredAmount,
|
@@ -77,14 +72,14 @@ abstract contract Product is
|
|
77
72
|
referralId
|
78
73
|
);
|
79
74
|
|
80
|
-
return
|
75
|
+
return premium.premiumAmount;
|
81
76
|
}
|
82
77
|
|
83
78
|
function calculateNetPremium(
|
84
79
|
Amount sumInsuredAmount,
|
85
|
-
RiskId
|
86
|
-
Seconds
|
87
|
-
bytes memory
|
80
|
+
RiskId,
|
81
|
+
Seconds,
|
82
|
+
bytes memory
|
88
83
|
)
|
89
84
|
external
|
90
85
|
view
|
@@ -128,20 +123,11 @@ abstract contract Product is
|
|
128
123
|
}
|
129
124
|
|
130
125
|
function getPoolNftId() external view override returns (NftId poolNftId) {
|
131
|
-
return getRegistry().
|
126
|
+
return getRegistry().getNftIdForAddress(address(_getProductStorage()._pool));
|
132
127
|
}
|
133
128
|
|
134
129
|
function getDistributionNftId() external view override returns (NftId distributionNftId) {
|
135
|
-
return getRegistry().
|
136
|
-
}
|
137
|
-
|
138
|
-
function withdrawFees(Amount amount)
|
139
|
-
external
|
140
|
-
virtual
|
141
|
-
onlyOwner()
|
142
|
-
returns (Amount withdrawnAmount)
|
143
|
-
{
|
144
|
-
return _withdrawFees(amount);
|
130
|
+
return getRegistry().getNftIdForAddress(address(_getProductStorage()._distribution));
|
145
131
|
}
|
146
132
|
|
147
133
|
function _initializeProduct(
|
@@ -152,8 +138,9 @@ abstract contract Product is
|
|
152
138
|
string memory name,
|
153
139
|
address token,
|
154
140
|
bool isInterceptor,
|
155
|
-
address pool,
|
156
|
-
address distribution,
|
141
|
+
address pool, // switch to pool nft id (#527)
|
142
|
+
address distribution, // switch to distribution nft id (#527)
|
143
|
+
// add NftId [] oracleNftIds (#527)
|
157
144
|
bytes memory registryData, // writeonly data that will saved in the object info record of the registry
|
158
145
|
bytes memory componentData // writeonly data that will saved in the object info record of the registry
|
159
146
|
)
|
@@ -175,8 +162,8 @@ abstract contract Product is
|
|
175
162
|
|
176
163
|
ProductStorage storage $ = _getProductStorage();
|
177
164
|
// TODO add validation
|
178
|
-
// TODO refactor to go via registry
|
179
|
-
$.
|
165
|
+
// TODO refactor to go via registry for all components linked to this product (#527)
|
166
|
+
$._riskService = IRiskService(_getServiceAddress(PRODUCT()));
|
180
167
|
$._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
|
181
168
|
$._policyService = IPolicyService(_getServiceAddress(POLICY()));
|
182
169
|
$._claimService = IClaimService(_getServiceAddress(CLAIM()));
|
@@ -184,10 +171,10 @@ abstract contract Product is
|
|
184
171
|
$._componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
185
172
|
$._pool = Pool(pool);
|
186
173
|
$._distribution = Distribution(distribution);
|
187
|
-
$._poolNftId = getRegistry().
|
188
|
-
$._distributionNftId = getRegistry().
|
174
|
+
$._poolNftId = getRegistry().getNftIdForAddress(pool);
|
175
|
+
$._distributionNftId = getRegistry().getNftIdForAddress(distribution);
|
189
176
|
|
190
|
-
|
177
|
+
_registerInterface(type(IProductComponent).interfaceId);
|
191
178
|
}
|
192
179
|
|
193
180
|
|
@@ -206,7 +193,7 @@ abstract contract Product is
|
|
206
193
|
RiskId id,
|
207
194
|
bytes memory data
|
208
195
|
) internal {
|
209
|
-
|
196
|
+
_getRiskService().createRisk(
|
210
197
|
id,
|
211
198
|
data
|
212
199
|
);
|
@@ -216,7 +203,7 @@ abstract contract Product is
|
|
216
203
|
RiskId id,
|
217
204
|
bytes memory data
|
218
205
|
) internal {
|
219
|
-
|
206
|
+
_getRiskService().updateRisk(
|
220
207
|
id,
|
221
208
|
data
|
222
209
|
);
|
@@ -226,7 +213,7 @@ abstract contract Product is
|
|
226
213
|
RiskId id,
|
227
214
|
StateId state
|
228
215
|
) internal {
|
229
|
-
|
216
|
+
_getRiskService().updateRiskState(
|
230
217
|
id,
|
231
218
|
state
|
232
219
|
);
|
@@ -242,6 +229,7 @@ abstract contract Product is
|
|
242
229
|
address applicationOwner,
|
243
230
|
RiskId riskId,
|
244
231
|
Amount sumInsuredAmount,
|
232
|
+
Amount premiumAmount,
|
245
233
|
Seconds lifetime,
|
246
234
|
NftId bundleNftId,
|
247
235
|
ReferralId referralId,
|
@@ -254,6 +242,7 @@ abstract contract Product is
|
|
254
242
|
applicationOwner,
|
255
243
|
riskId,
|
256
244
|
sumInsuredAmount,
|
245
|
+
premiumAmount,
|
257
246
|
lifetime,
|
258
247
|
bundleNftId,
|
259
248
|
referralId,
|
@@ -261,19 +250,36 @@ abstract contract Product is
|
|
261
250
|
);
|
262
251
|
}
|
263
252
|
|
264
|
-
function
|
265
|
-
NftId
|
266
|
-
bool requirePremiumPayment,
|
253
|
+
function _createPolicy(
|
254
|
+
NftId applicationNftId,
|
267
255
|
Timestamp activateAt
|
268
256
|
)
|
269
257
|
internal
|
270
258
|
{
|
271
|
-
_getProductStorage()._policyService.
|
272
|
-
|
273
|
-
requirePremiumPayment,
|
259
|
+
_getProductStorage()._policyService.createPolicy(
|
260
|
+
applicationNftId,
|
274
261
|
activateAt);
|
275
262
|
}
|
276
263
|
|
264
|
+
function _decline(
|
265
|
+
NftId policyNftId
|
266
|
+
)
|
267
|
+
internal
|
268
|
+
{
|
269
|
+
_getProductStorage()._policyService.decline(
|
270
|
+
policyNftId);
|
271
|
+
}
|
272
|
+
|
273
|
+
function _expire(
|
274
|
+
NftId policyNftId,
|
275
|
+
Timestamp expireAt
|
276
|
+
)
|
277
|
+
internal
|
278
|
+
returns (Timestamp expiredAt)
|
279
|
+
{
|
280
|
+
expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
|
281
|
+
}
|
282
|
+
|
277
283
|
function _collectPremium(
|
278
284
|
NftId policyNftId,
|
279
285
|
Timestamp activateAt
|
@@ -374,6 +380,24 @@ abstract contract Product is
|
|
374
380
|
data);
|
375
381
|
}
|
376
382
|
|
383
|
+
function _createPayoutForBeneficiary(
|
384
|
+
NftId policyNftId,
|
385
|
+
ClaimId claimId,
|
386
|
+
Amount amount,
|
387
|
+
address beneficiary,
|
388
|
+
bytes memory data
|
389
|
+
)
|
390
|
+
internal
|
391
|
+
returns (PayoutId)
|
392
|
+
{
|
393
|
+
return _getProductStorage()._claimService.createPayoutForBeneficiary(
|
394
|
+
policyNftId,
|
395
|
+
claimId,
|
396
|
+
amount,
|
397
|
+
beneficiary,
|
398
|
+
data);
|
399
|
+
}
|
400
|
+
|
377
401
|
function _processPayout(
|
378
402
|
NftId policyNftId,
|
379
403
|
PayoutId payoutId
|
@@ -389,21 +413,13 @@ abstract contract Product is
|
|
389
413
|
return RiskIdLib.toRiskId(riskName);
|
390
414
|
}
|
391
415
|
|
392
|
-
function _withdrawFees(Amount amount)
|
393
|
-
internal
|
394
|
-
virtual
|
395
|
-
returns (Amount withdrawnAmount)
|
396
|
-
{
|
397
|
-
return _getProductStorage()._componentService.withdrawFees(amount);
|
398
|
-
}
|
399
|
-
|
400
416
|
function _getProductStorage() private pure returns (ProductStorage storage $) {
|
401
417
|
assembly {
|
402
418
|
$.slot := PRODUCT_STORAGE_LOCATION_V1
|
403
419
|
}
|
404
420
|
}
|
405
421
|
|
406
|
-
function
|
407
|
-
return _getProductStorage().
|
422
|
+
function _getRiskService() internal view returns (IRiskService) {
|
423
|
+
return _getProductStorage()._riskService;
|
408
424
|
}
|
409
425
|
}
|
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IInstance} from "../instance/IInstance.sol";
|
5
5
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
6
6
|
import {IPoolService} from "../pool/PoolService.sol";
|
7
|
-
import {
|
7
|
+
import {IRiskService} from "./IRiskService.sol";
|
8
8
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
9
9
|
import {IRisk} from "../instance/module/IRisk.sol";
|
10
10
|
|
@@ -16,16 +16,14 @@ import {RiskId} from "../type/RiskId.sol";
|
|
16
16
|
import {StateId} from "../type/StateId.sol";
|
17
17
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
18
18
|
|
19
|
-
contract
|
19
|
+
contract RiskService is
|
20
20
|
ComponentVerifyingService,
|
21
|
-
|
21
|
+
IRiskService
|
22
22
|
{
|
23
23
|
IInstanceService private _instanceService;
|
24
24
|
IPoolService internal _poolService;
|
25
25
|
IRegistryService private _registryService;
|
26
26
|
|
27
|
-
event LogProductServiceSender(address sender);
|
28
|
-
|
29
27
|
function _initialize(
|
30
28
|
address owner,
|
31
29
|
bytes memory data
|
@@ -40,13 +38,13 @@ contract ProductService is
|
|
40
38
|
address authority
|
41
39
|
) = abi.decode(data, (address, address, address));
|
42
40
|
|
43
|
-
|
41
|
+
_initializeService(registryAddress, authority, owner);
|
44
42
|
|
45
43
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
46
44
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
|
47
45
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
48
46
|
|
49
|
-
|
47
|
+
_registerInterface(type(IRiskService).interfaceId);
|
50
48
|
}
|
51
49
|
|
52
50
|
|
@@ -3,11 +3,11 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
5
5
|
import {ProxyManager} from "../upgradeability/ProxyManager.sol";
|
6
|
-
import {
|
6
|
+
import {RiskService} from "./RiskService.sol";
|
7
7
|
|
8
|
-
contract
|
8
|
+
contract RiskServiceManager is ProxyManager {
|
9
9
|
|
10
|
-
|
10
|
+
RiskService private _riskService;
|
11
11
|
|
12
12
|
/// @dev initializes proxy manager with product service implementation
|
13
13
|
constructor(
|
@@ -17,23 +17,23 @@ contract ProductServiceManager is ProxyManager {
|
|
17
17
|
)
|
18
18
|
ProxyManager(registryAddress)
|
19
19
|
{
|
20
|
-
|
20
|
+
RiskService svc = new RiskService{salt: salt}();
|
21
21
|
bytes memory data = abi.encode(registryAddress, address(this), authority);
|
22
22
|
IVersionable versionable = deployDetermenistic(
|
23
23
|
address(svc),
|
24
24
|
data,
|
25
25
|
salt);
|
26
26
|
|
27
|
-
|
27
|
+
_riskService = RiskService(address(versionable));
|
28
28
|
}
|
29
29
|
|
30
30
|
//--- view functions ----------------------------------------------------//
|
31
|
-
function
|
31
|
+
function getRiskService()
|
32
32
|
external
|
33
33
|
view
|
34
|
-
returns (
|
34
|
+
returns (RiskService riskService)
|
35
35
|
{
|
36
|
-
return
|
36
|
+
return _riskService;
|
37
37
|
}
|
38
38
|
|
39
39
|
}
|