@etherisc/gif-next 0.0.2-b9366f5-670 → 0.0.2-b95860d-028
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 +1 -1
- 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 +148 -222
- 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 +88 -186
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +125 -198
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +99 -107
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +75 -57
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +29 -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 +1551 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2090 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1484 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1244 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1605 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2108 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +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 +48 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +51 -105
- 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 +280 -72
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +189 -98
- 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 +130 -204
- 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 +71 -53
- 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 +84 -182
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +103 -186
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +178 -187
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +117 -105
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +92 -46
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +200 -115
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +103 -173
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +308 -264
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +108 -88
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +71 -144
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -80
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +140 -197
- 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 +194 -200
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +116 -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 +140 -0
- 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 +129 -70
- 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 +252 -166
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -91
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +154 -219
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +87 -91
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +140 -197
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +65 -138
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +69 -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 +285 -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 +0 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +491 -94
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -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 +129 -221
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +63 -157
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +351 -263
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +120 -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 +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +50 -28
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +71 -53
- 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 +84 -182
- 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 +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +50 -28
- 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 +133 -207
- 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 +99 -88
- 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 +71 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -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 +55 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +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 +2 -1
- package/contracts/distribution/Distribution.sol +5 -15
- package/contracts/distribution/DistributionService.sol +61 -43
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +412 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/{example_components → examples}/unpermissioned/SimpleDistribution.sol +4 -4
- package/contracts/{example_components → examples}/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/{example_components → examples}/unpermissioned/SimplePool.sol +4 -4
- package/contracts/{example_components → examples}/unpermissioned/SimpleProduct.sol +10 -10
- package/contracts/instance/IInstance.sol +4 -1
- package/contracts/instance/IInstanceService.sol +0 -20
- package/contracts/instance/Instance.sol +21 -12
- package/contracts/instance/InstanceAdmin.sol +22 -30
- package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
- package/contracts/instance/InstanceReader.sol +83 -18
- package/contracts/instance/InstanceService.sol +19 -76
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/module/IComponents.sol +9 -4
- package/contracts/instance/module/IPolicy.sol +2 -2
- 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 +47 -35
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +14 -26
- package/contracts/pool/BasicPoolAuthorization.sol +0 -1
- package/contracts/pool/BundleService.sol +32 -9
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +9 -0
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +21 -14
- package/contracts/pool/Pool.sol +39 -30
- package/contracts/pool/PoolService.sol +99 -83
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +11 -8
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +6 -6
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +190 -86
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IClaimService.sol +3 -2
- package/contracts/product/IPolicyService.sol +10 -3
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +23 -3
- package/contracts/product/PolicyService.sol +145 -35
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +8 -12
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +83 -53
- package/contracts/product/RiskService.sol +4 -5
- package/contracts/product/RiskServiceManager.sol +4 -4
- package/contracts/registry/ChainNft.sol +65 -36
- package/contracts/registry/IRegistry.sol +54 -17
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +0 -1
- package/contracts/registry/Registry.sol +341 -200
- package/contracts/registry/RegistryAdmin.sol +124 -50
- 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 +203 -187
- package/contracts/registry/ServiceAuthorizationV3.sol +14 -19
- package/contracts/shared/Component.sol +26 -18
- package/contracts/shared/ComponentService.sol +230 -136
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +22 -13
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +6 -2
- package/contracts/shared/IComponentService.sol +25 -13
- 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 +71 -30
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +22 -6
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +19 -9
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +20 -18
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/Staking.sol +5 -6
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +3 -17
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/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 +15 -1
- 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 +2 -1
- 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/example_components/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +0 -4
- package/artifacts/contracts/example_components/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +0 -1558
- package/artifacts/contracts/example_components/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +0 -4
- package/artifacts/contracts/example_components/unpermissioned/SimpleOracle.sol/SimpleOracle.json +0 -1318
- package/artifacts/contracts/example_components/unpermissioned/SimplePool.sol/SimplePool.dbg.json +0 -4
- package/artifacts/contracts/example_components/unpermissioned/SimplePool.sol/SimplePool.json +0 -1664
- package/artifacts/contracts/example_components/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +0 -4
- package/artifacts/contracts/example_components/unpermissioned/SimpleProduct.sol/SimpleProduct.json +0 -2125
- 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
|
@@ -4,12 +4,20 @@ pragma solidity ^0.8.20;
|
|
|
4
4
|
import {IService} from "../shared/IService.sol";
|
|
5
5
|
|
|
6
6
|
import {Amount} from "../type/Amount.sol";
|
|
7
|
+
import {IInstance} from "../instance/IInstance.sol";
|
|
7
8
|
import {NftId} from "../type/NftId.sol";
|
|
8
9
|
import {StateId} from "../type/StateId.sol";
|
|
9
10
|
import {Timestamp} from "../type/Timestamp.sol";
|
|
10
11
|
|
|
11
12
|
interface IPolicyService is IService {
|
|
12
13
|
|
|
14
|
+
event LogPolicyServicePolicyCreated(NftId policyNftId, Amount premiumAmount, Timestamp activatedAt);
|
|
15
|
+
event LogPolicyServicePolicyDeclined(NftId policyNftId);
|
|
16
|
+
event LogPolicyServicePolicyPremiumCollected(NftId policyNftId, Amount premiumAmount);
|
|
17
|
+
event LogPolicyServicePolicyActivated(NftId policyNftId, Timestamp activatedAt);
|
|
18
|
+
event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp originalExpiredAt, Timestamp expiredAt);
|
|
19
|
+
event LogPolicyServicePolicyClosed(NftId policyNftId);
|
|
20
|
+
|
|
13
21
|
error ErrorPolicyServicePolicyProductMismatch(NftId applicationNftId, NftId expectedProductNftId, NftId actualProductNftId);
|
|
14
22
|
error ErrorPolicyServicePolicyStateNotApplied(NftId applicationNftId);
|
|
15
23
|
error ErrorPolicyServicePolicyStateNotCollateralized(NftId applicationNftId);
|
|
@@ -32,9 +40,6 @@ interface IPolicyService is IService {
|
|
|
32
40
|
error ErrorPolicyServicePremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount recalculatedPremiumAmount);
|
|
33
41
|
error ErrorPolicyServiceTransferredPremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount transferredPremiumAmount);
|
|
34
42
|
|
|
35
|
-
event LogPolicyServicePolicyDeclined(NftId policyNftId);
|
|
36
|
-
event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp expiredAt);
|
|
37
|
-
|
|
38
43
|
/// @dev creates the policy from {applicationNftId}.
|
|
39
44
|
/// After successful completion of the function the policy can be referenced using the application NftId.
|
|
40
45
|
/// Locks the sum insured amount in the pool, but does not transfer tokens. Call collectPremium to transfer tokens.
|
|
@@ -65,6 +70,8 @@ interface IPolicyService is IService {
|
|
|
65
70
|
/// @return expiredAt the effective expiry date
|
|
66
71
|
function expire(NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
|
|
67
72
|
|
|
73
|
+
function expirePolicy(IInstance instance, NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
|
|
74
|
+
|
|
68
75
|
/// @dev closes the specified policy and sets the closed data in the policy metadata
|
|
69
76
|
/// a policy can only be closed when it has been expired. in addition, it must not have any open claims
|
|
70
77
|
/// this function can only be called by a product. the policy needs to match with the calling product
|
|
@@ -14,15 +14,15 @@ interface IPricingService is IService
|
|
|
14
14
|
{
|
|
15
15
|
|
|
16
16
|
error ErrorPricingServiceTargetWalletAmountsMismatch();
|
|
17
|
-
error
|
|
18
|
-
error
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
error ErrorPricingServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
|
|
18
|
+
error ErrorPricingServiceFeeCalculationMismatch(
|
|
19
|
+
Amount distributionFeeFixAmount,
|
|
20
|
+
Amount distributionFeeVarAmount,
|
|
21
|
+
Amount distributionOwnerFeeFixAmount,
|
|
22
|
+
Amount distributionOwnerFeeVarAmount,
|
|
23
|
+
Amount commissionAmount,
|
|
24
|
+
Amount discountAmount
|
|
25
|
+
);
|
|
26
26
|
|
|
27
27
|
function calculatePremium(
|
|
28
28
|
NftId productNftId,
|
|
@@ -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);
|
|
@@ -21,6 +21,7 @@ import {StateId} from "../type/StateId.sol";
|
|
|
21
21
|
import {VersionPart} from "../type/Version.sol";
|
|
22
22
|
|
|
23
23
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
|
24
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
|
24
25
|
import {IApplicationService} from "./IApplicationService.sol";
|
|
25
26
|
import {IBundleService} from "../pool/IBundleService.sol";
|
|
26
27
|
import {IClaimService} from "./IClaimService.sol";
|
|
@@ -28,6 +29,7 @@ import {IComponentService} from "../shared/IComponentService.sol";
|
|
|
28
29
|
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
|
29
30
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
|
30
31
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
|
32
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
|
31
33
|
import {IPolicyService} from "./IPolicyService.sol";
|
|
32
34
|
import {IPoolService} from "../pool/IPoolService.sol";
|
|
33
35
|
import {IPricingService} from "./IPricingService.sol";
|
|
@@ -36,9 +38,6 @@ contract PolicyService is
|
|
|
36
38
|
ComponentVerifyingService,
|
|
37
39
|
IPolicyService
|
|
38
40
|
{
|
|
39
|
-
using NftIdLib for NftId;
|
|
40
|
-
using TimestampLib for Timestamp;
|
|
41
|
-
|
|
42
41
|
IApplicationService internal _applicationService;
|
|
43
42
|
IComponentService internal _componentService;
|
|
44
43
|
IBundleService internal _bundleService;
|
|
@@ -56,12 +55,11 @@ contract PolicyService is
|
|
|
56
55
|
initializer
|
|
57
56
|
{
|
|
58
57
|
(
|
|
59
|
-
address registryAddress
|
|
60
|
-
//address managerAddress
|
|
58
|
+
address registryAddress,
|
|
61
59
|
address authority
|
|
62
|
-
) = abi.decode(data, (address, address
|
|
60
|
+
) = abi.decode(data, (address, address));
|
|
63
61
|
|
|
64
|
-
|
|
62
|
+
_initializeService(registryAddress, authority, owner);
|
|
65
63
|
|
|
66
64
|
VersionPart majorVersion = getVersion().toMajorPart();
|
|
67
65
|
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
|
@@ -72,7 +70,7 @@ contract PolicyService is
|
|
|
72
70
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
|
73
71
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
|
74
72
|
|
|
75
|
-
|
|
73
|
+
_registerInterface(type(IPolicyService).interfaceId);
|
|
76
74
|
}
|
|
77
75
|
|
|
78
76
|
|
|
@@ -80,7 +78,8 @@ contract PolicyService is
|
|
|
80
78
|
NftId applicationNftId // = policyNftId
|
|
81
79
|
)
|
|
82
80
|
external
|
|
83
|
-
virtual
|
|
81
|
+
virtual
|
|
82
|
+
nonReentrant()
|
|
84
83
|
{
|
|
85
84
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
|
86
85
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
@@ -115,7 +114,8 @@ contract PolicyService is
|
|
|
115
114
|
Timestamp activateAt
|
|
116
115
|
)
|
|
117
116
|
external
|
|
118
|
-
virtual
|
|
117
|
+
virtual
|
|
118
|
+
nonReentrant()
|
|
119
119
|
{
|
|
120
120
|
// check caller is registered product
|
|
121
121
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
|
@@ -175,16 +175,21 @@ contract PolicyService is
|
|
|
175
175
|
// update referral counter
|
|
176
176
|
{
|
|
177
177
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
178
|
+
|
|
179
|
+
if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
|
180
|
+
_distributionService.processReferral(
|
|
181
|
+
productInfo.distributionNftId,
|
|
182
|
+
applicationInfo.referralId);
|
|
183
|
+
}
|
|
181
184
|
}
|
|
182
|
-
|
|
183
|
-
// TODO add calling pool contract if it needs to validate application
|
|
184
185
|
|
|
185
|
-
//
|
|
186
|
+
// log policy creation before interactions with token and policy holder
|
|
187
|
+
emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
|
|
186
188
|
|
|
187
|
-
// TODO
|
|
189
|
+
// TODO add calling pool contract if it needs to validate application
|
|
190
|
+
|
|
191
|
+
// callback to policy holder if applicable
|
|
192
|
+
_policyHolderPolicyActivated(applicationNftId, activateAt);
|
|
188
193
|
}
|
|
189
194
|
|
|
190
195
|
|
|
@@ -195,6 +200,7 @@ contract PolicyService is
|
|
|
195
200
|
)
|
|
196
201
|
external
|
|
197
202
|
virtual
|
|
203
|
+
nonReentrant()
|
|
198
204
|
{
|
|
199
205
|
// check caller is registered product
|
|
200
206
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
|
@@ -228,15 +234,18 @@ contract PolicyService is
|
|
|
228
234
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
|
229
235
|
instance.getInstanceStore().updatePremiumState(policyNftId, PAID());
|
|
230
236
|
|
|
231
|
-
//
|
|
237
|
+
// log premium collection before interactions with token
|
|
238
|
+
emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
|
|
232
239
|
|
|
233
240
|
_transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
|
234
|
-
|
|
235
|
-
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
|
236
241
|
}
|
|
237
242
|
|
|
238
243
|
/// @inheritdoc IPolicyService
|
|
239
|
-
function activate(NftId policyNftId, Timestamp activateAt)
|
|
244
|
+
function activate(NftId policyNftId, Timestamp activateAt)
|
|
245
|
+
external
|
|
246
|
+
virtual
|
|
247
|
+
nonReentrant()
|
|
248
|
+
{
|
|
240
249
|
// check caller is registered product
|
|
241
250
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
|
242
251
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
@@ -246,9 +255,11 @@ contract PolicyService is
|
|
|
246
255
|
|
|
247
256
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
|
248
257
|
|
|
249
|
-
//
|
|
258
|
+
// log policy activation before interactions with policy holder
|
|
259
|
+
emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
|
|
250
260
|
|
|
251
|
-
//
|
|
261
|
+
// callback to policy holder if applicable
|
|
262
|
+
_policyHolderPolicyActivated(policyNftId, activateAt);
|
|
252
263
|
}
|
|
253
264
|
|
|
254
265
|
|
|
@@ -258,15 +269,14 @@ contract PolicyService is
|
|
|
258
269
|
Timestamp expireAt
|
|
259
270
|
)
|
|
260
271
|
external
|
|
261
|
-
override
|
|
262
272
|
virtual
|
|
273
|
+
nonReentrant()
|
|
263
274
|
returns (Timestamp expiredAt)
|
|
264
275
|
{
|
|
265
276
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
|
266
|
-
|
|
267
|
-
|
|
277
|
+
|
|
268
278
|
// check policy matches with calling product
|
|
269
|
-
IPolicy.PolicyInfo memory policyInfo =
|
|
279
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
|
270
280
|
if(policyInfo.productNftId != productNftId) {
|
|
271
281
|
revert ErrorPolicyServicePolicyProductMismatch(
|
|
272
282
|
policyNftId,
|
|
@@ -274,8 +284,44 @@ contract PolicyService is
|
|
|
274
284
|
productNftId);
|
|
275
285
|
}
|
|
276
286
|
|
|
287
|
+
return _expire(
|
|
288
|
+
instance,
|
|
289
|
+
policyNftId,
|
|
290
|
+
expireAt
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/// @inheritdoc IPolicyService
|
|
295
|
+
function expirePolicy(
|
|
296
|
+
IInstance instance,
|
|
297
|
+
NftId policyNftId,
|
|
298
|
+
Timestamp expireAt
|
|
299
|
+
)
|
|
300
|
+
external
|
|
301
|
+
virtual
|
|
302
|
+
nonReentrant()
|
|
303
|
+
returns (Timestamp expiredAt)
|
|
304
|
+
{
|
|
305
|
+
return _expire(
|
|
306
|
+
instance,
|
|
307
|
+
policyNftId,
|
|
308
|
+
expireAt
|
|
309
|
+
);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
function _expire(
|
|
313
|
+
IInstance instance,
|
|
314
|
+
NftId policyNftId,
|
|
315
|
+
Timestamp expireAt
|
|
316
|
+
)
|
|
317
|
+
internal
|
|
318
|
+
returns (Timestamp expiredAt)
|
|
319
|
+
{
|
|
320
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
|
321
|
+
|
|
277
322
|
// check policy is active
|
|
278
323
|
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
|
324
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
|
279
325
|
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
|
280
326
|
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
|
281
327
|
}
|
|
@@ -297,12 +343,14 @@ contract PolicyService is
|
|
|
297
343
|
}
|
|
298
344
|
|
|
299
345
|
// update policyInfo with new expiredAt timestamp
|
|
346
|
+
Timestamp originalExpiredAt = policyInfo.expiredAt;
|
|
300
347
|
policyInfo.expiredAt = expiredAt;
|
|
301
348
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
|
302
349
|
|
|
303
|
-
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expiredAt);
|
|
350
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
|
|
304
351
|
|
|
305
|
-
//
|
|
352
|
+
// callback to policy holder if applicable
|
|
353
|
+
_policyHolderPolicyExpired(policyNftId, expiredAt);
|
|
306
354
|
}
|
|
307
355
|
|
|
308
356
|
|
|
@@ -310,7 +358,8 @@ contract PolicyService is
|
|
|
310
358
|
NftId policyNftId
|
|
311
359
|
)
|
|
312
360
|
external
|
|
313
|
-
|
|
361
|
+
virtual
|
|
362
|
+
nonReentrant()
|
|
314
363
|
{
|
|
315
364
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
|
316
365
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
@@ -351,7 +400,7 @@ contract PolicyService is
|
|
|
351
400
|
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
|
352
401
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
|
353
402
|
|
|
354
|
-
|
|
403
|
+
emit LogPolicyServicePolicyClosed(policyNftId);
|
|
355
404
|
}
|
|
356
405
|
|
|
357
406
|
|
|
@@ -439,10 +488,12 @@ contract PolicyService is
|
|
|
439
488
|
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
|
440
489
|
|
|
441
490
|
// update distribution fees and distributor commission and pool fees
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
491
|
+
if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
|
492
|
+
_distributionService.processSale(
|
|
493
|
+
distributionNftId,
|
|
494
|
+
referralId,
|
|
495
|
+
premium);
|
|
496
|
+
}
|
|
446
497
|
|
|
447
498
|
// update pool and bundle fees
|
|
448
499
|
_poolService.processSale(
|
|
@@ -525,6 +576,64 @@ contract PolicyService is
|
|
|
525
576
|
}
|
|
526
577
|
|
|
527
578
|
|
|
579
|
+
function _policyHolderPolicyActivated(
|
|
580
|
+
NftId policyNftId,
|
|
581
|
+
Timestamp activateAt
|
|
582
|
+
)
|
|
583
|
+
internal
|
|
584
|
+
virtual
|
|
585
|
+
{
|
|
586
|
+
// immediately return if policy is not activated
|
|
587
|
+
if (activateAt.eqz()) {
|
|
588
|
+
return;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
// get policy holder address
|
|
592
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
|
593
|
+
|
|
594
|
+
// execute callback if policy holder implements IPolicyHolder
|
|
595
|
+
if (address(policyHolder) != address(0)) {
|
|
596
|
+
policyHolder.policyActivated(policyNftId, activateAt);
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
function _policyHolderPolicyExpired(
|
|
602
|
+
NftId policyNftId,
|
|
603
|
+
Timestamp expiredAt
|
|
604
|
+
)
|
|
605
|
+
internal
|
|
606
|
+
virtual
|
|
607
|
+
{
|
|
608
|
+
// immediately return if policy is not activated
|
|
609
|
+
if (expiredAt.eqz()) {
|
|
610
|
+
return;
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
// get policy holder address
|
|
614
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
|
615
|
+
|
|
616
|
+
// execute callback if policy holder implements IPolicyHolder
|
|
617
|
+
if (address(policyHolder) != address(0)) {
|
|
618
|
+
policyHolder.policyExpired(policyNftId, expiredAt);
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
function _getPolicyHolder(NftId policyNftId)
|
|
624
|
+
internal
|
|
625
|
+
view
|
|
626
|
+
returns (IPolicyHolder policyHolder)
|
|
627
|
+
{
|
|
628
|
+
address policyHolderAddress = getRegistry().ownerOf(policyNftId);
|
|
629
|
+
policyHolder = IPolicyHolder(policyHolderAddress);
|
|
630
|
+
|
|
631
|
+
if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
|
|
632
|
+
policyHolder = IPolicyHolder(address(0));
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
|
|
528
637
|
function _getTokenHandler(
|
|
529
638
|
InstanceReader instanceReader,
|
|
530
639
|
NftId productNftId
|
|
@@ -539,6 +648,7 @@ contract PolicyService is
|
|
|
539
648
|
tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
|
540
649
|
}
|
|
541
650
|
|
|
651
|
+
|
|
542
652
|
function _getDistributionNftAndWallets(
|
|
543
653
|
InstanceReader instanceReader,
|
|
544
654
|
NftId productNftId
|
|
@@ -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);
|
|
@@ -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
|
}
|
|
@@ -102,7 +98,7 @@ contract PricingService is
|
|
|
102
98
|
|
|
103
99
|
IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
|
104
100
|
if(bundleInfo.poolNftId != productInfo.poolNftId) {
|
|
105
|
-
revert
|
|
101
|
+
revert ErrorPricingServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, productInfo.poolNftId);
|
|
106
102
|
}
|
|
107
103
|
|
|
108
104
|
// calculate fixed fees for product, pool, bundle
|
|
@@ -139,7 +135,7 @@ contract PricingService is
|
|
|
139
135
|
}
|
|
140
136
|
|
|
141
137
|
if (premium.distributionOwnerFeeFixAmount.toInt() < productInfo.minDistributionOwnerFee.fixedFee) {
|
|
142
|
-
revert
|
|
138
|
+
revert ErrorPricingServiceFeeCalculationMismatch(
|
|
143
139
|
premium.distributionFeeFixAmount,
|
|
144
140
|
premium.distributionFeeVarAmount,
|
|
145
141
|
premium.distributionOwnerFeeFixAmount,
|
|
@@ -150,7 +146,7 @@ contract PricingService is
|
|
|
150
146
|
}
|
|
151
147
|
|
|
152
148
|
if ((premium.distributionFeeVarAmount) != (premium.discountAmount + premium.distributionOwnerFeeVarAmount + premium.commissionAmount)) {
|
|
153
|
-
revert
|
|
149
|
+
revert ErrorPricingServiceFeeCalculationMismatch(
|
|
154
150
|
premium.distributionFeeFixAmount,
|
|
155
151
|
premium.distributionFeeVarAmount,
|
|
156
152
|
premium.distributionOwnerFeeFixAmount,
|
|
@@ -240,7 +236,7 @@ contract PricingService is
|
|
|
240
236
|
{
|
|
241
237
|
|
|
242
238
|
// if the referral is not valid, then the distribution owner gets everything
|
|
243
|
-
if (! _distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
|
|
239
|
+
if (productInfo.distributionNftId.eqz() || ! _distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
|
|
244
240
|
premium.distributionOwnerFeeFixAmount = premium.distributionFeeFixAmount;
|
|
245
241
|
premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount;
|
|
246
242
|
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);
|