@etherisc/gif-next 0.0.2-e8ea5fe-337 → 0.0.2-e91c6be-472
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 +28 -7
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/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 +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +162 -327
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +102 -243
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +180 -198
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +131 -107
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +92 -81
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +52 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1429 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -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 +1430 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +31 -86
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +72 -123
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +165 -138
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +286 -83
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +96 -245
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +99 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +197 -116
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +121 -286
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
- 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 +87 -76
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +97 -238
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +107 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +99 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +115 -256
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +203 -208
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +135 -107
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +72 -15
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +107 -107
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +272 -185
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +115 -267
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +420 -366
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +128 -88
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +87 -144
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +96 -80
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +156 -251
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +202 -200
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +136 -104
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +64 -8
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +147 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +146 -89
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +267 -167
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +127 -91
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +170 -219
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +111 -91
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +154 -249
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +81 -138
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +93 -77
- 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 +309 -33
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +515 -94
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +296 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +94 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +91 -75
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +131 -223
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +76 -213
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +426 -263
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +140 -110
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +111 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -51
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +388 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +87 -76
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +97 -238
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
- 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 +47 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +84 -87
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +152 -311
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +112 -97
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +87 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +95 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +64 -59
- package/contracts/authorization/Authorization.sol +111 -39
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -3
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +4 -3
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +12 -23
- package/contracts/distribution/DistributionService.sol +78 -60
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +431 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
- package/contracts/instance/IInstance.sol +4 -1
- package/contracts/instance/IInstanceService.sol +2 -23
- package/contracts/instance/Instance.sol +22 -19
- package/contracts/instance/InstanceAdmin.sol +23 -31
- package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
- package/contracts/instance/InstanceReader.sol +83 -18
- package/contracts/instance/InstanceService.sol +35 -88
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/module/IComponents.sol +10 -6
- package/contracts/instance/module/IPolicy.sol +4 -3
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +5 -16
- package/contracts/oracle/OracleService.sol +56 -43
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +12 -2
- package/contracts/pool/BundleService.sol +96 -49
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +11 -5
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +42 -30
- package/contracts/pool/Pool.sol +142 -123
- package/contracts/pool/PoolService.sol +254 -143
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +20 -9
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +8 -12
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +235 -108
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IClaimService.sol +3 -2
- package/contracts/product/IPolicyService.sol +13 -4
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +23 -3
- package/contracts/product/PolicyService.sol +169 -47
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +12 -13
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +77 -70
- package/contracts/product/RiskService.sol +4 -5
- package/contracts/product/RiskServiceManager.sol +4 -4
- package/contracts/registry/ChainNft.sol +68 -38
- package/contracts/registry/IRegistry.sol +56 -17
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +349 -200
- package/contracts/registry/RegistryAdmin.sol +146 -58
- package/contracts/registry/RegistryService.sol +35 -46
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +204 -204
- package/contracts/registry/ServiceAuthorizationV3.sol +24 -20
- package/contracts/shared/Component.sol +62 -101
- package/contracts/shared/ComponentService.sol +291 -153
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +27 -16
- package/contracts/shared/ContractLib.sol +54 -0
- package/contracts/shared/IComponent.sol +10 -13
- package/contracts/shared/IComponentService.sol +38 -16
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +70 -37
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +26 -6
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +19 -11
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +20 -18
- package/contracts/shared/TokenHandler.sol +324 -66
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +9 -4
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/Staking.sol +34 -27
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +71 -25
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +1 -0
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +16 -2
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/StateId.sol +14 -1
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +4 -3
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -2,9 +2,11 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
5
6
|
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
6
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
7
8
|
import {NftId} from "../type/NftId.sol";
|
9
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
8
10
|
import {ReferralId} from "../type/Referral.sol";
|
9
11
|
import {RiskId} from "../type/RiskId.sol";
|
10
12
|
import {Seconds} from "../type/Seconds.sol";
|
@@ -13,6 +15,23 @@ interface IProductComponent is
|
|
13
15
|
IInstanceLinkedComponent
|
14
16
|
{
|
15
17
|
|
18
|
+
// @dev register a new component for this product cluster.
|
19
|
+
function registerComponent(address component)
|
20
|
+
external
|
21
|
+
returns (NftId componentNftId);
|
22
|
+
|
23
|
+
/// @dev Callback function to inform product compnent about arrival of funding for a claim.
|
24
|
+
/// The callback is called by the pool service after the corresponding pool triggers this function.
|
25
|
+
/// The callback is only called when the product's property isProcessingFundedClaims is set.
|
26
|
+
function processFundedClaim(
|
27
|
+
NftId policyNftId,
|
28
|
+
ClaimId claimId,
|
29
|
+
Amount availableAmount
|
30
|
+
) external;
|
31
|
+
|
32
|
+
|
33
|
+
/// @dev Calculates the premium amount for the provided application data.
|
34
|
+
/// The returned premium amounts takes into account potential discounts and fees.
|
16
35
|
function calculatePremium(
|
17
36
|
Amount sumInsuredAmount,
|
18
37
|
RiskId riskId,
|
@@ -22,6 +41,10 @@ interface IProductComponent is
|
|
22
41
|
ReferralId referralId
|
23
42
|
) external view returns (Amount premiumAmount);
|
24
43
|
|
44
|
+
|
45
|
+
/// @dev Calculates the net premium amount for the provided application data.
|
46
|
+
/// The returned net premium amounts only covers the cost of collateralizing the application.
|
47
|
+
/// This amount purely depends on the use case specific risk and does not include any fees/commission.
|
25
48
|
function calculateNetPremium(
|
26
49
|
Amount sumInsuredAmount,
|
27
50
|
RiskId riskId,
|
@@ -29,9 +52,6 @@ interface IProductComponent is
|
|
29
52
|
bytes memory applicationData
|
30
53
|
) external view returns (Amount netPremiumAmount);
|
31
54
|
|
32
|
-
function getPoolNftId() external view returns (NftId poolNftId);
|
33
|
-
function getDistributionNftId() external view returns (NftId distributionNftId);
|
34
|
-
|
35
55
|
|
36
56
|
/// @dev returns initial pool specific infos for this pool
|
37
57
|
function getInitialProductInfo() external view returns (IComponents.ProductInfo memory info);
|
@@ -15,12 +15,13 @@ import {Amount, AmountLib} from "../type/Amount.sol";
|
|
15
15
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
16
16
|
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
17
17
|
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
|
18
|
-
import {NftId
|
18
|
+
import {NftId} from "../type/NftId.sol";
|
19
19
|
import {ReferralId} from "../type/Referral.sol";
|
20
20
|
import {StateId} from "../type/StateId.sol";
|
21
21
|
import {VersionPart} from "../type/Version.sol";
|
22
22
|
|
23
23
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
24
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
24
25
|
import {IApplicationService} from "./IApplicationService.sol";
|
25
26
|
import {IBundleService} from "../pool/IBundleService.sol";
|
26
27
|
import {IClaimService} from "./IClaimService.sol";
|
@@ -28,6 +29,7 @@ import {IComponentService} from "../shared/IComponentService.sol";
|
|
28
29
|
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
29
30
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
30
31
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
32
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
31
33
|
import {IPolicyService} from "./IPolicyService.sol";
|
32
34
|
import {IPoolService} from "../pool/IPoolService.sol";
|
33
35
|
import {IPricingService} from "./IPricingService.sol";
|
@@ -36,13 +38,7 @@ contract PolicyService is
|
|
36
38
|
ComponentVerifyingService,
|
37
39
|
IPolicyService
|
38
40
|
{
|
39
|
-
using NftIdLib for NftId;
|
40
|
-
using TimestampLib for Timestamp;
|
41
|
-
|
42
|
-
IApplicationService internal _applicationService;
|
43
41
|
IComponentService internal _componentService;
|
44
|
-
IBundleService internal _bundleService;
|
45
|
-
IClaimService internal _claimService;
|
46
42
|
IDistributionService internal _distributionService;
|
47
43
|
IPoolService internal _poolService;
|
48
44
|
IPricingService internal _pricingService;
|
@@ -56,23 +52,19 @@ contract PolicyService is
|
|
56
52
|
initializer
|
57
53
|
{
|
58
54
|
(
|
59
|
-
address registryAddress
|
60
|
-
//address managerAddress
|
55
|
+
address registryAddress,
|
61
56
|
address authority
|
62
|
-
) = abi.decode(data, (address, address
|
57
|
+
) = abi.decode(data, (address, address));
|
63
58
|
|
64
|
-
|
59
|
+
_initializeService(registryAddress, authority, owner);
|
65
60
|
|
66
61
|
VersionPart majorVersion = getVersion().toMajorPart();
|
67
|
-
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
68
|
-
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
69
62
|
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
70
|
-
_claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
|
71
63
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
72
64
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
73
65
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
74
66
|
|
75
|
-
|
67
|
+
_registerInterface(type(IPolicyService).interfaceId);
|
76
68
|
}
|
77
69
|
|
78
70
|
|
@@ -80,8 +72,11 @@ contract PolicyService is
|
|
80
72
|
NftId applicationNftId // = policyNftId
|
81
73
|
)
|
82
74
|
external
|
83
|
-
virtual
|
75
|
+
virtual
|
76
|
+
nonReentrant()
|
84
77
|
{
|
78
|
+
_checkNftType(applicationNftId, POLICY());
|
79
|
+
|
85
80
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
86
81
|
InstanceReader instanceReader = instance.getInstanceReader();
|
87
82
|
|
@@ -115,8 +110,12 @@ contract PolicyService is
|
|
115
110
|
Timestamp activateAt
|
116
111
|
)
|
117
112
|
external
|
118
|
-
virtual
|
113
|
+
virtual
|
114
|
+
nonReentrant()
|
115
|
+
returns (Amount premiumAmount)
|
119
116
|
{
|
117
|
+
_checkNftType(applicationNftId, POLICY());
|
118
|
+
|
120
119
|
// check caller is registered product
|
121
120
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
122
121
|
InstanceReader instanceReader = instance.getInstanceReader();
|
@@ -172,19 +171,24 @@ contract PolicyService is
|
|
172
171
|
applicationNftId,
|
173
172
|
premium);
|
174
173
|
|
174
|
+
premiumAmount = premium.fullPremiumAmount;
|
175
|
+
|
175
176
|
// update referral counter
|
176
177
|
{
|
177
178
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
178
|
-
|
179
|
-
|
180
|
-
|
179
|
+
|
180
|
+
if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
181
|
+
_distributionService.processReferral(
|
182
|
+
productInfo.distributionNftId,
|
183
|
+
applicationInfo.referralId);
|
184
|
+
}
|
181
185
|
}
|
182
|
-
|
183
|
-
// TODO add calling pool contract if it needs to validate application
|
184
186
|
|
185
|
-
//
|
187
|
+
// log policy creation before interactions with token and policy holder
|
188
|
+
emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
|
186
189
|
|
187
|
-
//
|
190
|
+
// callback to policy holder if applicable
|
191
|
+
_policyHolderPolicyActivated(applicationNftId, activateAt);
|
188
192
|
}
|
189
193
|
|
190
194
|
|
@@ -195,7 +199,10 @@ contract PolicyService is
|
|
195
199
|
)
|
196
200
|
external
|
197
201
|
virtual
|
202
|
+
nonReentrant()
|
198
203
|
{
|
204
|
+
_checkNftType(policyNftId, POLICY());
|
205
|
+
|
199
206
|
// check caller is registered product
|
200
207
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
201
208
|
InstanceReader instanceReader = instance.getInstanceReader();
|
@@ -228,15 +235,20 @@ contract PolicyService is
|
|
228
235
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
229
236
|
instance.getInstanceStore().updatePremiumState(policyNftId, PAID());
|
230
237
|
|
231
|
-
//
|
238
|
+
// log premium collection before interactions with token
|
239
|
+
emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
|
232
240
|
|
233
241
|
_transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
234
|
-
|
235
|
-
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
236
242
|
}
|
237
243
|
|
238
244
|
/// @inheritdoc IPolicyService
|
239
|
-
function activate(NftId policyNftId, Timestamp activateAt)
|
245
|
+
function activate(NftId policyNftId, Timestamp activateAt)
|
246
|
+
external
|
247
|
+
virtual
|
248
|
+
nonReentrant()
|
249
|
+
{
|
250
|
+
_checkNftType(policyNftId, POLICY());
|
251
|
+
|
240
252
|
// check caller is registered product
|
241
253
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
242
254
|
InstanceReader instanceReader = instance.getInstanceReader();
|
@@ -246,9 +258,11 @@ contract PolicyService is
|
|
246
258
|
|
247
259
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
248
260
|
|
249
|
-
//
|
261
|
+
// log policy activation before interactions with policy holder
|
262
|
+
emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
|
250
263
|
|
251
|
-
//
|
264
|
+
// callback to policy holder if applicable
|
265
|
+
_policyHolderPolicyActivated(policyNftId, activateAt);
|
252
266
|
}
|
253
267
|
|
254
268
|
|
@@ -258,15 +272,16 @@ contract PolicyService is
|
|
258
272
|
Timestamp expireAt
|
259
273
|
)
|
260
274
|
external
|
261
|
-
override
|
262
275
|
virtual
|
276
|
+
nonReentrant()
|
263
277
|
returns (Timestamp expiredAt)
|
264
278
|
{
|
265
|
-
(
|
266
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
279
|
+
_checkNftType(policyNftId, POLICY());
|
267
280
|
|
281
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
282
|
+
|
268
283
|
// check policy matches with calling product
|
269
|
-
IPolicy.PolicyInfo memory policyInfo =
|
284
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
270
285
|
if(policyInfo.productNftId != productNftId) {
|
271
286
|
revert ErrorPolicyServicePolicyProductMismatch(
|
272
287
|
policyNftId,
|
@@ -274,8 +289,46 @@ contract PolicyService is
|
|
274
289
|
productNftId);
|
275
290
|
}
|
276
291
|
|
292
|
+
return _expire(
|
293
|
+
instance,
|
294
|
+
policyNftId,
|
295
|
+
expireAt
|
296
|
+
);
|
297
|
+
}
|
298
|
+
|
299
|
+
/// @inheritdoc IPolicyService
|
300
|
+
function expirePolicy(
|
301
|
+
IInstance instance,
|
302
|
+
NftId policyNftId,
|
303
|
+
Timestamp expireAt
|
304
|
+
)
|
305
|
+
external
|
306
|
+
virtual
|
307
|
+
nonReentrant()
|
308
|
+
returns (Timestamp expiredAt)
|
309
|
+
{
|
310
|
+
_checkNftType(policyNftId, POLICY());
|
311
|
+
|
312
|
+
return _expire(
|
313
|
+
instance,
|
314
|
+
policyNftId,
|
315
|
+
expireAt
|
316
|
+
);
|
317
|
+
}
|
318
|
+
|
319
|
+
function _expire(
|
320
|
+
IInstance instance,
|
321
|
+
NftId policyNftId,
|
322
|
+
Timestamp expireAt
|
323
|
+
)
|
324
|
+
internal
|
325
|
+
returns (Timestamp expiredAt)
|
326
|
+
{
|
327
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
328
|
+
|
277
329
|
// check policy is active
|
278
330
|
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
331
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
279
332
|
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
280
333
|
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
281
334
|
}
|
@@ -297,12 +350,14 @@ contract PolicyService is
|
|
297
350
|
}
|
298
351
|
|
299
352
|
// update policyInfo with new expiredAt timestamp
|
353
|
+
Timestamp originalExpiredAt = policyInfo.expiredAt;
|
300
354
|
policyInfo.expiredAt = expiredAt;
|
301
355
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
302
356
|
|
303
|
-
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expiredAt);
|
357
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
|
304
358
|
|
305
|
-
//
|
359
|
+
// callback to policy holder if applicable
|
360
|
+
_policyHolderPolicyExpired(policyNftId, expiredAt);
|
306
361
|
}
|
307
362
|
|
308
363
|
|
@@ -310,8 +365,11 @@ contract PolicyService is
|
|
310
365
|
NftId policyNftId
|
311
366
|
)
|
312
367
|
external
|
313
|
-
|
368
|
+
virtual
|
369
|
+
nonReentrant()
|
314
370
|
{
|
371
|
+
_checkNftType(policyNftId, POLICY());
|
372
|
+
|
315
373
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
316
374
|
InstanceReader instanceReader = instance.getInstanceReader();
|
317
375
|
|
@@ -351,7 +409,7 @@ contract PolicyService is
|
|
351
409
|
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
352
410
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
353
411
|
|
354
|
-
|
412
|
+
emit LogPolicyServicePolicyClosed(policyNftId);
|
355
413
|
}
|
356
414
|
|
357
415
|
|
@@ -374,7 +432,7 @@ contract PolicyService is
|
|
374
432
|
address policyHolder = getRegistry().ownerOf(applicationNftId);
|
375
433
|
|
376
434
|
_checkPremiumBalanceAndAllowance(
|
377
|
-
tokenHandler.
|
435
|
+
tokenHandler.TOKEN(),
|
378
436
|
address(tokenHandler),
|
379
437
|
policyHolder,
|
380
438
|
premium.premiumAmount);
|
@@ -439,10 +497,12 @@ contract PolicyService is
|
|
439
497
|
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
440
498
|
|
441
499
|
// update distribution fees and distributor commission and pool fees
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
500
|
+
if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
501
|
+
_distributionService.processSale(
|
502
|
+
distributionNftId,
|
503
|
+
referralId,
|
504
|
+
premium);
|
505
|
+
}
|
446
506
|
|
447
507
|
// update pool and bundle fees
|
448
508
|
_poolService.processSale(
|
@@ -525,6 +585,64 @@ contract PolicyService is
|
|
525
585
|
}
|
526
586
|
|
527
587
|
|
588
|
+
function _policyHolderPolicyActivated(
|
589
|
+
NftId policyNftId,
|
590
|
+
Timestamp activateAt
|
591
|
+
)
|
592
|
+
internal
|
593
|
+
virtual
|
594
|
+
{
|
595
|
+
// immediately return if policy is not activated
|
596
|
+
if (activateAt.eqz()) {
|
597
|
+
return;
|
598
|
+
}
|
599
|
+
|
600
|
+
// get policy holder address
|
601
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
602
|
+
|
603
|
+
// execute callback if policy holder implements IPolicyHolder
|
604
|
+
if (address(policyHolder) != address(0)) {
|
605
|
+
policyHolder.policyActivated(policyNftId, activateAt);
|
606
|
+
}
|
607
|
+
}
|
608
|
+
|
609
|
+
|
610
|
+
function _policyHolderPolicyExpired(
|
611
|
+
NftId policyNftId,
|
612
|
+
Timestamp expiredAt
|
613
|
+
)
|
614
|
+
internal
|
615
|
+
virtual
|
616
|
+
{
|
617
|
+
// immediately return if policy is not activated
|
618
|
+
if (expiredAt.eqz()) {
|
619
|
+
return;
|
620
|
+
}
|
621
|
+
|
622
|
+
// get policy holder address
|
623
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
624
|
+
|
625
|
+
// execute callback if policy holder implements IPolicyHolder
|
626
|
+
if (address(policyHolder) != address(0)) {
|
627
|
+
policyHolder.policyExpired(policyNftId, expiredAt);
|
628
|
+
}
|
629
|
+
}
|
630
|
+
|
631
|
+
|
632
|
+
function _getPolicyHolder(NftId policyNftId)
|
633
|
+
internal
|
634
|
+
view
|
635
|
+
returns (IPolicyHolder policyHolder)
|
636
|
+
{
|
637
|
+
address policyHolderAddress = getRegistry().ownerOf(policyNftId);
|
638
|
+
policyHolder = IPolicyHolder(policyHolderAddress);
|
639
|
+
|
640
|
+
if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
|
641
|
+
policyHolder = IPolicyHolder(address(0));
|
642
|
+
}
|
643
|
+
}
|
644
|
+
|
645
|
+
|
528
646
|
function _getTokenHandler(
|
529
647
|
InstanceReader instanceReader,
|
530
648
|
NftId productNftId
|
@@ -539,6 +657,7 @@ contract PolicyService is
|
|
539
657
|
tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
540
658
|
}
|
541
659
|
|
660
|
+
|
542
661
|
function _getDistributionNftAndWallets(
|
543
662
|
InstanceReader instanceReader,
|
544
663
|
NftId productNftId
|
@@ -553,10 +672,13 @@ contract PolicyService is
|
|
553
672
|
)
|
554
673
|
{
|
555
674
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
675
|
+
productWallet = instanceReader.getComponentInfo(productNftId).tokenHandler.getWallet();
|
676
|
+
poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).tokenHandler.getWallet();
|
677
|
+
|
678
|
+
if (productInfo.hasDistribution) {
|
679
|
+
distributionNftId = productInfo.distributionNftId;
|
680
|
+
distributionWallet = instanceReader.getComponentInfo(distributionNftId).tokenHandler.getWallet();
|
681
|
+
}
|
560
682
|
}
|
561
683
|
|
562
684
|
|
@@ -12,14 +12,14 @@ contract PolicyServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with product service implementation
|
13
13
|
constructor(
|
14
14
|
address authority,
|
15
|
-
address
|
15
|
+
address registry,
|
16
16
|
bytes32 salt
|
17
17
|
)
|
18
|
-
ProxyManager(registryAddress)
|
19
18
|
{
|
20
19
|
PolicyService svc = new PolicyService{salt: salt}();
|
21
|
-
bytes memory data = abi.encode(
|
22
|
-
IVersionable versionable =
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
23
|
address(svc),
|
24
24
|
data,
|
25
25
|
salt);
|
@@ -9,7 +9,7 @@ import {NftId} from "../type/NftId.sol";
|
|
9
9
|
import {Fee} from "../type/Fee.sol";
|
10
10
|
import {ReferralId} from "../type/Referral.sol";
|
11
11
|
import {RiskId} from "../type/RiskId.sol";
|
12
|
-
import {PRODUCT, DISTRIBUTION, PRICE} from "../type/ObjectType.sol";
|
12
|
+
import {PRODUCT, BUNDLE, DISTRIBUTION, PRICE} from "../type/ObjectType.sol";
|
13
13
|
import {IRegistry} from "../registry/IRegistry.sol";
|
14
14
|
|
15
15
|
import {IProductComponent} from "./IProductComponent.sol";
|
@@ -31,11 +31,8 @@ contract PricingService is
|
|
31
31
|
ComponentVerifyingService,
|
32
32
|
IPricingService
|
33
33
|
{
|
34
|
-
using UFixedLib for UFixed;
|
35
|
-
|
36
34
|
IDistributionService internal _distributionService;
|
37
35
|
|
38
|
-
|
39
36
|
function _initialize(
|
40
37
|
address owner,
|
41
38
|
bytes memory data
|
@@ -45,13 +42,12 @@ contract PricingService is
|
|
45
42
|
initializer()
|
46
43
|
{
|
47
44
|
(
|
48
|
-
address registryAddress
|
49
|
-
//address managerAddress
|
45
|
+
address registryAddress,
|
50
46
|
address authority
|
51
|
-
) = abi.decode(data, (address, address
|
47
|
+
) = abi.decode(data, (address, address));
|
52
48
|
|
53
|
-
|
54
|
-
|
49
|
+
_initializeService(registryAddress, authority, owner);
|
50
|
+
_registerInterface(type(IPricingService).interfaceId);
|
55
51
|
|
56
52
|
_distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
|
57
53
|
}
|
@@ -74,6 +70,9 @@ contract PricingService is
|
|
74
70
|
IPolicy.PremiumInfo memory premium
|
75
71
|
)
|
76
72
|
{
|
73
|
+
_checkNftType(productNftId, PRODUCT());
|
74
|
+
_checkNftType(bundleNftId, BUNDLE());
|
75
|
+
|
77
76
|
InstanceReader reader;
|
78
77
|
Amount netPremiumAmount;
|
79
78
|
|
@@ -102,7 +101,7 @@ contract PricingService is
|
|
102
101
|
|
103
102
|
IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
104
103
|
if(bundleInfo.poolNftId != productInfo.poolNftId) {
|
105
|
-
revert
|
104
|
+
revert ErrorPricingServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, productInfo.poolNftId);
|
106
105
|
}
|
107
106
|
|
108
107
|
// calculate fixed fees for product, pool, bundle
|
@@ -139,7 +138,7 @@ contract PricingService is
|
|
139
138
|
}
|
140
139
|
|
141
140
|
if (premium.distributionOwnerFeeFixAmount.toInt() < productInfo.minDistributionOwnerFee.fixedFee) {
|
142
|
-
revert
|
141
|
+
revert ErrorPricingServiceFeeCalculationMismatch(
|
143
142
|
premium.distributionFeeFixAmount,
|
144
143
|
premium.distributionFeeVarAmount,
|
145
144
|
premium.distributionOwnerFeeFixAmount,
|
@@ -150,7 +149,7 @@ contract PricingService is
|
|
150
149
|
}
|
151
150
|
|
152
151
|
if ((premium.distributionFeeVarAmount) != (premium.discountAmount + premium.distributionOwnerFeeVarAmount + premium.commissionAmount)) {
|
153
|
-
revert
|
152
|
+
revert ErrorPricingServiceFeeCalculationMismatch(
|
154
153
|
premium.distributionFeeFixAmount,
|
155
154
|
premium.distributionFeeVarAmount,
|
156
155
|
premium.distributionOwnerFeeFixAmount,
|
@@ -240,7 +239,7 @@ contract PricingService is
|
|
240
239
|
{
|
241
240
|
|
242
241
|
// if the referral is not valid, then the distribution owner gets everything
|
243
|
-
if (! _distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
|
242
|
+
if (productInfo.distributionNftId.eqz() || ! _distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
|
244
243
|
premium.distributionOwnerFeeFixAmount = premium.distributionFeeFixAmount;
|
245
244
|
premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount;
|
246
245
|
premium.premiumAmount = premium.fullPremiumAmount;
|
@@ -15,11 +15,11 @@ contract PricingServiceManager is ProxyManager {
|
|
15
15
|
address registryAddress,
|
16
16
|
bytes32 salt
|
17
17
|
)
|
18
|
-
ProxyManager(registryAddress)
|
19
18
|
{
|
20
19
|
PricingService pricingSrv = new PricingService{salt: salt}();
|
21
|
-
bytes memory data = abi.encode(registryAddress,
|
22
|
-
IVersionable versionable =
|
20
|
+
bytes memory data = abi.encode(registryAddress, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registryAddress,
|
23
23
|
address(pricingSrv),
|
24
24
|
data,
|
25
25
|
salt);
|