@etherisc/gif-next 0.0.2-96b5b72-170 → 0.0.2-97aac30-275
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 +2 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +193 -164
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +114 -321
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +120 -82
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +72 -108
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +22 -48
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +25 -6
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +56 -22
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +53 -18
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -28
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +458 -331
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +133 -59
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +110 -32
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1103 -308
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +662 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +718 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +69 -252
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +105 -55
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +8 -53
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +134 -86
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +121 -133
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +239 -92
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +170 -368
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +98 -72
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +69 -153
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +105 -31
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +95 -203
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +118 -56
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +7 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +7 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +81 -25
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +230 -107
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -55
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +164 -299
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +106 -92
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +139 -160
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +130 -40
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +334 -146
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +29 -214
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +88 -34
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +163 -61
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +256 -65
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +378 -67
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +272 -68
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +87 -35
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +799 -127
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -138
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +184 -11
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +908 -49
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +792 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +526 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +172 -4
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +867 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +80 -22
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +1 -11
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +21 -3
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +7 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +176 -24
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +31 -13
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +64 -16
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +21 -7
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +7 -1
- 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/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1103 -172
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +497 -49
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1247 -56
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +167 -30
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +605 -78
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +122 -28
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +34 -34
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +15 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +76 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
- package/contracts/distribution/Distribution.sol +27 -51
- package/contracts/distribution/DistributionService.sol +55 -106
- package/contracts/distribution/DistributionServiceManager.sol +9 -18
- package/contracts/distribution/IDistributionComponent.sol +3 -8
- package/contracts/distribution/IDistributionService.sol +2 -8
- package/contracts/instance/IInstance.sol +12 -7
- package/contracts/instance/IInstanceService.sol +13 -5
- package/contracts/instance/Instance.sol +30 -23
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +210 -141
- package/contracts/instance/InstanceReader.sol +64 -42
- package/contracts/instance/InstanceService.sol +141 -87
- package/contracts/instance/InstanceServiceManager.sol +10 -20
- package/contracts/instance/InstanceStore.sol +125 -55
- package/contracts/instance/base/BalanceStore.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/module/IAccess.sol +2 -10
- package/contracts/instance/module/IBundle.sol +1 -4
- package/contracts/instance/module/IComponents.sol +15 -4
- package/contracts/instance/module/IPolicy.sol +8 -2
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/IOracle.sol +20 -0
- package/contracts/oracle/IOracleComponent.sol +32 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +145 -0
- package/contracts/oracle/OracleService.sol +277 -0
- package/contracts/oracle/OracleServiceManager.sol +42 -0
- package/contracts/pool/BundleService.sol +63 -149
- package/contracts/pool/BundleServiceManager.sol +9 -18
- package/contracts/pool/IBundleService.sol +4 -16
- package/contracts/pool/IPoolComponent.sol +2 -4
- package/contracts/pool/IPoolService.sol +45 -9
- package/contracts/pool/Pool.sol +37 -40
- package/contracts/pool/PoolService.sol +195 -145
- package/contracts/pool/PoolServiceManager.sol +9 -18
- package/contracts/product/ApplicationService.sol +111 -43
- package/contracts/product/ApplicationServiceManager.sol +9 -6
- package/contracts/product/ClaimService.sol +21 -21
- package/contracts/product/ClaimServiceManager.sol +9 -6
- package/contracts/product/IApplicationService.sol +1 -1
- package/contracts/product/IClaimService.sol +7 -1
- package/contracts/product/IPolicyService.sol +6 -8
- package/contracts/product/IPricingService.sol +3 -1
- package/contracts/product/IProductComponent.sol +5 -4
- package/contracts/product/IProductService.sol +1 -8
- package/contracts/product/PolicyService.sol +226 -127
- package/contracts/product/PolicyServiceManager.sol +9 -21
- package/contracts/product/PricingService.sol +74 -48
- package/contracts/product/PricingServiceManager.sol +9 -18
- package/contracts/product/Product.sol +45 -47
- package/contracts/product/ProductService.sol +26 -112
- package/contracts/product/ProductServiceManager.sol +9 -21
- package/contracts/registry/ChainNft.sol +1 -0
- package/contracts/registry/IRegistry.sol +38 -24
- package/contracts/registry/IRegistryService.sol +31 -31
- package/contracts/registry/Registry.sol +176 -105
- package/contracts/registry/RegistryAdmin.sol +237 -0
- package/contracts/registry/RegistryService.sol +44 -82
- package/contracts/registry/RegistryServiceManager.sol +21 -23
- package/contracts/registry/ReleaseManager.sol +450 -210
- package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
- package/contracts/registry/TokenRegistry.sol +261 -62
- package/contracts/shared/AccessManagerCustom.sol +736 -0
- package/contracts/shared/AccessManagerExtended.sol +470 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/shared/Component.sol +153 -49
- package/contracts/shared/ComponentService.sol +561 -93
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/ERC165.sol +1 -1
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +20 -8
- package/contracts/shared/IComponentService.sol +102 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +5 -11
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +6 -6
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
- package/contracts/shared/INftOwnable.sol +1 -1
- package/contracts/shared/IPolicyHolder.sol +6 -1
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +51 -178
- package/contracts/{instance/base → shared}/KeyValueStore.sol +30 -72
- package/contracts/{instance/base → shared}/Lifecycle.sol +12 -3
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +2 -13
- package/contracts/shared/PolicyHolder.sol +21 -13
- package/contracts/shared/ProxyManager.sol +31 -1
- package/contracts/shared/Registerable.sol +2 -2
- package/contracts/shared/Service.sol +7 -2
- package/contracts/staking/IStaking.sol +146 -8
- package/contracts/staking/IStakingService.sol +83 -39
- package/contracts/staking/StakeManagerLib.sol +179 -0
- package/contracts/staking/Staking.sol +503 -17
- package/contracts/staking/StakingManager.sol +22 -14
- package/contracts/staking/StakingReader.sol +187 -0
- package/contracts/staking/StakingService.sol +246 -44
- package/contracts/staking/StakingServiceManager.sol +8 -4
- package/contracts/staking/StakingStore.sol +572 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +20 -1
- package/contracts/type/Blocknumber.sol +20 -3
- package/contracts/type/Fee.sol +17 -16
- package/contracts/type/NftId.sol +14 -16
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +12 -10
- package/contracts/type/Referral.sol +1 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +18 -4
- package/contracts/type/Seconds.sol +27 -0
- package/contracts/type/StateId.sol +27 -2
- package/contracts/type/Timestamp.sol +6 -2
- package/contracts/type/Version.sol +1 -1
- package/package.json +4 -3
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/instance/module/ISetup.sol +0 -33
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/registry/RegistryAccessManager.sol +0 -207
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
@@ -1,5 +1,5 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {IRegistry} from "../registry/IRegistry.sol";
|
5
5
|
import {Product} from "./Product.sol";
|
@@ -10,7 +10,6 @@ import {IPolicy} from "../instance/module/IPolicy.sol";
|
|
10
10
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
11
11
|
import {IRisk} from "../instance/module/IRisk.sol";
|
12
12
|
import {IBundle} from "../instance/module/IBundle.sol";
|
13
|
-
import {ISetup} from "../instance/module/ISetup.sol";
|
14
13
|
|
15
14
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
16
15
|
|
@@ -18,19 +17,22 @@ import {Amount, AmountLib} from "../type/Amount.sol";
|
|
18
17
|
import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
|
19
18
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
20
19
|
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
21
|
-
import {ObjectType, APPLICATION, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
20
|
+
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
22
21
|
import {APPLIED, COLLATERALIZED, ACTIVE, KEEP_STATE, CLOSED, DECLINED, CONFIRMED} from "../type/StateId.sol";
|
23
22
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
24
23
|
import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
24
|
+
import {ReferralId} from "../type/Referral.sol";
|
25
25
|
import {StateId} from "../type/StateId.sol";
|
26
26
|
import {VersionPart} from "../type/Version.sol";
|
27
27
|
|
28
|
-
import {
|
28
|
+
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
29
29
|
import {IApplicationService} from "./IApplicationService.sol";
|
30
30
|
import {IBundleService} from "../pool/IBundleService.sol";
|
31
31
|
import {IClaimService} from "./IClaimService.sol";
|
32
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
32
33
|
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
33
34
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
35
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
34
36
|
import {IPolicyService} from "./IPolicyService.sol";
|
35
37
|
import {IPoolService} from "../pool/IPoolService.sol";
|
36
38
|
import {IPricingService} from "./IPricingService.sol";
|
@@ -38,13 +40,14 @@ import {IService} from "../shared/IService.sol";
|
|
38
40
|
import {Service} from "../shared/Service.sol";
|
39
41
|
|
40
42
|
contract PolicyService is
|
41
|
-
|
43
|
+
ComponentVerifyingService,
|
42
44
|
IPolicyService
|
43
45
|
{
|
44
46
|
using NftIdLib for NftId;
|
45
47
|
using TimestampLib for Timestamp;
|
46
48
|
|
47
49
|
IApplicationService internal _applicationService;
|
50
|
+
IComponentService internal _componentService;
|
48
51
|
IBundleService internal _bundleService;
|
49
52
|
IClaimService internal _claimService;
|
50
53
|
IDistributionService internal _distributionService;
|
@@ -61,17 +64,20 @@ contract PolicyService is
|
|
61
64
|
virtual override
|
62
65
|
initializer
|
63
66
|
{
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
+
(
|
68
|
+
address registryAddress,,
|
69
|
+
//address managerAddress
|
70
|
+
address authority
|
71
|
+
) = abi.decode(data, (address, address, address));
|
67
72
|
|
68
|
-
initializeService(registryAddress,
|
73
|
+
initializeService(registryAddress, authority, owner);
|
69
74
|
|
70
75
|
VersionPart majorVersion = getVersion().toMajorPart();
|
71
|
-
|
76
|
+
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
72
77
|
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
78
|
+
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
73
79
|
_claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
|
74
|
-
|
80
|
+
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
75
81
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
76
82
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
77
83
|
|
@@ -86,7 +92,7 @@ contract PolicyService is
|
|
86
92
|
|
87
93
|
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
88
94
|
IRegistry.ObjectInfo memory productInfo;
|
89
|
-
(, productInfo,) =
|
95
|
+
(, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
|
90
96
|
product = Product(productInfo.objectAddress);
|
91
97
|
}
|
92
98
|
|
@@ -100,6 +106,7 @@ contract PolicyService is
|
|
100
106
|
revert();
|
101
107
|
}
|
102
108
|
|
109
|
+
event LogDebug(uint idx, string message);
|
103
110
|
|
104
111
|
/// @dev underwites application which includes the locking of the required collateral from the pool.
|
105
112
|
function collateralize(
|
@@ -111,9 +118,14 @@ contract PolicyService is
|
|
111
118
|
virtual override
|
112
119
|
{
|
113
120
|
// check caller is registered product
|
114
|
-
(NftId productNftId,, IInstance instance) =
|
121
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
115
122
|
InstanceReader instanceReader = instance.getInstanceReader();
|
116
123
|
|
124
|
+
// check policy is in state applied
|
125
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
126
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
127
|
+
}
|
128
|
+
|
117
129
|
// check policy matches with calling product
|
118
130
|
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
119
131
|
if(applicationInfo.productNftId != productNftId) {
|
@@ -122,14 +134,21 @@ contract PolicyService is
|
|
122
134
|
applicationInfo.productNftId,
|
123
135
|
productNftId);
|
124
136
|
}
|
125
|
-
|
126
|
-
// check policy is in state applied
|
127
|
-
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
128
|
-
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
129
|
-
}
|
130
137
|
|
131
138
|
StateId newPolicyState = COLLATERALIZED();
|
132
139
|
|
140
|
+
// actual collateralizaion
|
141
|
+
(
|
142
|
+
Amount localCollateralAmount,
|
143
|
+
Amount totalCollateralAmount
|
144
|
+
) = _poolService.lockCollateral(
|
145
|
+
instance,
|
146
|
+
address(instanceReader.getComponentInfo(productNftId).token),
|
147
|
+
productNftId,
|
148
|
+
applicationNftId,
|
149
|
+
applicationInfo.bundleNftId,
|
150
|
+
applicationInfo.sumInsuredAmount);
|
151
|
+
|
133
152
|
// optional activation of policy
|
134
153
|
if(activateAt > zeroTimestamp()) {
|
135
154
|
newPolicyState = ACTIVE();
|
@@ -137,51 +156,28 @@ contract PolicyService is
|
|
137
156
|
applicationInfo.expiredAt = activateAt.addSeconds(applicationInfo.lifetime);
|
138
157
|
}
|
139
158
|
|
140
|
-
// lock bundle collateral
|
141
|
-
Amount netPremiumAmount = AmountLib.zero(); // > 0 if immediate premium payment
|
142
|
-
|
143
159
|
// optional collection of premium
|
144
160
|
if(requirePremiumPayment) {
|
145
|
-
|
146
|
-
instance,
|
147
|
-
applicationNftId,
|
148
|
-
applicationInfo
|
161
|
+
Amount premiumPaidAmount = _calculateAndCollectPremium(
|
162
|
+
instance,
|
163
|
+
applicationNftId,
|
164
|
+
applicationInfo);
|
149
165
|
|
150
|
-
applicationInfo.premiumPaidAmount =
|
166
|
+
applicationInfo.premiumPaidAmount = premiumPaidAmount;
|
151
167
|
}
|
152
168
|
|
153
169
|
// store updated policy info
|
154
|
-
instance.getInstanceStore().updatePolicy(
|
155
|
-
|
156
|
-
// lock collateral and update pool and bundle book keeping
|
157
|
-
// pool retention level: fraction of sum insured that product will cover from pool funds directly
|
158
|
-
// eg retention level 30%, payouts up to 30% of the sum insured will be made from the product's pool directly
|
159
|
-
// for the remaining 70% the pool owns a policy that will cover claims that exceed the 30% of the sum insured
|
160
|
-
// might also call pool component (for isVerifyingApplications pools)
|
161
|
-
_poolService.lockCollateral(
|
162
|
-
instance,
|
163
|
-
productNftId,
|
170
|
+
instance.getInstanceStore().updatePolicy(
|
164
171
|
applicationNftId,
|
165
|
-
applicationInfo,
|
166
|
-
|
172
|
+
applicationInfo,
|
173
|
+
newPolicyState);
|
174
|
+
|
175
|
+
// TODO add calling pool contract if it needs to validate application
|
167
176
|
|
168
177
|
// TODO: add logging
|
169
178
|
}
|
170
179
|
|
171
180
|
|
172
|
-
function calculateRequiredCollateral(
|
173
|
-
UFixed collateralizationLevel,
|
174
|
-
Amount sumInsuredAmount
|
175
|
-
)
|
176
|
-
public
|
177
|
-
pure
|
178
|
-
virtual
|
179
|
-
returns(Amount collateralAmount)
|
180
|
-
{
|
181
|
-
UFixed collateralUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
|
182
|
-
return AmountLib.toAmount(collateralUFixed.toInt());
|
183
|
-
}
|
184
|
-
|
185
181
|
function collectPremium(
|
186
182
|
NftId policyNftId,
|
187
183
|
Timestamp activateAt
|
@@ -190,24 +186,27 @@ contract PolicyService is
|
|
190
186
|
virtual
|
191
187
|
{
|
192
188
|
// check caller is registered product
|
193
|
-
(
|
189
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
194
190
|
InstanceReader instanceReader = instance.getInstanceReader();
|
195
|
-
|
191
|
+
StateId stateId = instanceReader.getPolicyState(policyNftId);
|
196
192
|
|
197
|
-
|
198
|
-
|
193
|
+
// check policy is in state collateralized or active
|
194
|
+
if (!(stateId == COLLATERALIZED() || stateId == ACTIVE())) {
|
195
|
+
revert ErrorPolicyServicePolicyStateNotCollateralizedOrApplied(policyNftId);
|
199
196
|
}
|
200
197
|
|
201
|
-
|
198
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
202
199
|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
200
|
+
// check if premium is already collected
|
201
|
+
if (policyInfo.premiumPaidAmount.gtz()) {
|
202
|
+
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
|
203
|
+
}
|
207
204
|
|
208
|
-
policyInfo.premiumPaidAmount =
|
205
|
+
policyInfo.premiumPaidAmount = _calculateAndCollectPremium(
|
206
|
+
instance,
|
207
|
+
policyNftId,
|
208
|
+
policyInfo);
|
209
209
|
|
210
|
-
_bundleService.increaseBalance(instance, policyInfo.bundleNftId, netPremiumAmount);
|
211
210
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
212
211
|
|
213
212
|
if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
|
@@ -219,7 +218,7 @@ contract PolicyService is
|
|
219
218
|
|
220
219
|
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
221
220
|
// check caller is registered product
|
222
|
-
(,, IInstance instance) =
|
221
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
223
222
|
InstanceReader instanceReader = instance.getInstanceReader();
|
224
223
|
|
225
224
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -253,7 +252,7 @@ contract PolicyService is
|
|
253
252
|
external
|
254
253
|
override
|
255
254
|
{
|
256
|
-
(,, IInstance instance) =
|
255
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
257
256
|
InstanceReader instanceReader = instance.getInstanceReader();
|
258
257
|
|
259
258
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -284,6 +283,7 @@ contract PolicyService is
|
|
284
283
|
|
285
284
|
_poolService.releaseCollateral(
|
286
285
|
instance,
|
286
|
+
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
287
287
|
policyNftId,
|
288
288
|
policyInfo);
|
289
289
|
|
@@ -291,86 +291,185 @@ contract PolicyService is
|
|
291
291
|
}
|
292
292
|
|
293
293
|
|
294
|
-
function
|
294
|
+
function _calculateAndCollectPremium(
|
295
295
|
IInstance instance,
|
296
|
-
NftId
|
297
|
-
|
296
|
+
NftId applicationNftId,
|
297
|
+
IPolicy.PolicyInfo memory applicationInfo
|
298
298
|
)
|
299
299
|
internal
|
300
|
-
|
300
|
+
virtual
|
301
|
+
returns (
|
302
|
+
Amount premiumPaidAmount
|
303
|
+
)
|
301
304
|
{
|
302
|
-
|
303
|
-
if(premiumExpectedAmount.eqz()) {
|
304
|
-
return AmountLib.zero();
|
305
|
-
}
|
305
|
+
NftId productNftId = applicationInfo.productNftId;
|
306
306
|
|
307
|
-
|
308
|
-
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
307
|
+
// calculate premium details
|
309
308
|
IPolicy.Premium memory premium = _pricingService.calculatePremium(
|
310
309
|
productNftId,
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
310
|
+
applicationInfo.riskId,
|
311
|
+
applicationInfo.sumInsuredAmount,
|
312
|
+
applicationInfo.lifetime,
|
313
|
+
applicationInfo.applicationData,
|
314
|
+
applicationInfo.bundleNftId,
|
315
|
+
applicationInfo.referralId);
|
316
|
+
|
317
|
+
|
318
|
+
// update financials and transfer premium tokens
|
319
|
+
premiumPaidAmount = _processAndCollect(
|
320
|
+
instance,
|
321
|
+
productNftId,
|
322
|
+
applicationNftId,
|
323
|
+
applicationInfo.premiumAmount,
|
324
|
+
applicationInfo.bundleNftId,
|
325
|
+
applicationInfo.referralId,
|
326
|
+
premium);
|
327
|
+
}
|
325
328
|
|
326
|
-
address policyOwner = getRegistry().ownerOf(policyNftId);
|
327
|
-
ISetup.ProductSetupInfo memory productSetupInfo = instance.getInstanceReader().getProductSetupInfo(productNftId);
|
328
|
-
TokenHandler tokenHandler = productSetupInfo.tokenHandler;
|
329
|
-
if (tokenHandler.getToken().allowance(policyOwner, address(tokenHandler)) < premium.premiumAmount) {
|
330
|
-
revert ErrorIPolicyServiceInsufficientAllowance(policyOwner, address(tokenHandler), premium.premiumAmount);
|
331
|
-
}
|
332
329
|
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
Amount
|
330
|
+
function _processAndCollect(
|
331
|
+
IInstance instance,
|
332
|
+
NftId productNftId,
|
333
|
+
NftId policyNftId,
|
334
|
+
Amount premiumExpectedAmount,
|
335
|
+
NftId bundleNftId,
|
336
|
+
ReferralId referralId,
|
337
|
+
IPolicy.Premium memory premium
|
338
|
+
)
|
339
|
+
internal
|
340
|
+
virtual
|
341
|
+
returns (Amount premiumPaidAmount)
|
342
|
+
{
|
343
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
344
|
+
TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
345
|
+
address policyHolder = getRegistry().ownerOf(policyNftId);
|
346
|
+
premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
|
347
|
+
|
348
|
+
_checkPremiumBalanceAndAllowance(
|
349
|
+
tokenHandler,
|
350
|
+
policyHolder,
|
351
|
+
premiumExpectedAmount,
|
352
|
+
premiumPaidAmount);
|
353
|
+
|
354
|
+
_processSaleAndTransferFunds(
|
355
|
+
instanceReader,
|
356
|
+
instance.getInstanceStore(),
|
357
|
+
tokenHandler,
|
358
|
+
policyHolder,
|
359
|
+
productNftId,
|
360
|
+
bundleNftId,
|
361
|
+
referralId,
|
362
|
+
premium);
|
363
|
+
}
|
338
364
|
|
339
|
-
netPremiumAmount = AmountLib.toAmount(premium.netPremiumAmount);
|
340
365
|
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
366
|
+
function _checkPremiumBalanceAndAllowance(
|
367
|
+
TokenHandler tokenHandler,
|
368
|
+
address policyHolder,
|
369
|
+
Amount premiumExpectedAmount,
|
370
|
+
Amount premiumPaidAmount
|
371
|
+
)
|
372
|
+
internal
|
373
|
+
virtual
|
374
|
+
view
|
375
|
+
{
|
376
|
+
// TODO decide how to handle this properly
|
377
|
+
// not clear if this is the best way to handle this
|
378
|
+
if (premiumExpectedAmount < premiumPaidAmount) {
|
379
|
+
revert ErrorPolicyServicePremiumHigherThanExpected(premiumExpectedAmount, premiumPaidAmount);
|
345
380
|
}
|
346
381
|
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
382
|
+
uint256 premiumAmount = premiumPaidAmount.toInt();
|
383
|
+
uint256 balance = tokenHandler.getToken().balanceOf(policyHolder);
|
384
|
+
uint256 allowance = tokenHandler.getToken().allowance(policyHolder, address(tokenHandler));
|
385
|
+
|
386
|
+
if (balance < premiumAmount) {
|
387
|
+
revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premiumAmount, balance);
|
353
388
|
}
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
address poolWallet = instance.getInstanceReader().getComponentInfo(productSetupInfo.poolNftId).wallet;
|
358
|
-
tokenHandler.transfer(policyOwner, poolWallet, poolAmountToTransfer);
|
359
|
-
_poolService.processSale(policyInfo.bundleNftId, premium, poolAmountToTransfer);
|
389
|
+
|
390
|
+
if (allowance < premiumAmount) {
|
391
|
+
revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, address(tokenHandler), premiumAmount, allowance);
|
360
392
|
}
|
393
|
+
}
|
361
394
|
|
362
|
-
// validate total amount transferred
|
363
|
-
{
|
364
|
-
Amount totalTransferred = distributionFeeAmountToTransfer + poolAmountToTransfer + productFeeAmountToTransfer;
|
365
395
|
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
396
|
+
function _processSaleAndTransferFunds(
|
397
|
+
InstanceReader instanceReader,
|
398
|
+
InstanceStore instanceStore,
|
399
|
+
TokenHandler tokenHandler,
|
400
|
+
address policyHolder,
|
401
|
+
NftId productNftId,
|
402
|
+
NftId bundleNftId,
|
403
|
+
ReferralId referralId,
|
404
|
+
IPolicy.Premium memory premium
|
405
|
+
)
|
406
|
+
internal
|
407
|
+
virtual
|
408
|
+
{
|
409
|
+
(
|
410
|
+
NftId distributionNftId,
|
411
|
+
address distributionWallet,
|
412
|
+
address poolWallet,
|
413
|
+
address productWallet
|
414
|
+
) = _getDistributionNftAndWallets(
|
415
|
+
instanceReader,
|
416
|
+
productNftId);
|
417
|
+
|
418
|
+
// update product fees, distribution and pool fees
|
419
|
+
_componentService.increaseProductFees(
|
420
|
+
instanceStore,
|
421
|
+
productNftId,
|
422
|
+
AmountLib.toAmount(premium.productFeeVarAmount + premium.productFeeFixAmount));
|
423
|
+
|
424
|
+
// update distribution fees and distributor commission and pool fees
|
425
|
+
_distributionService.processSale(
|
426
|
+
distributionNftId,
|
427
|
+
referralId,
|
428
|
+
premium);
|
429
|
+
|
430
|
+
// update pool and bundle fees
|
431
|
+
_poolService.processSale(
|
432
|
+
bundleNftId,
|
433
|
+
premium);
|
434
|
+
|
435
|
+
// transfer premium amounts to target wallets
|
436
|
+
tokenHandler.transfer(policyHolder, productWallet, premium.productFeeAmount);
|
437
|
+
tokenHandler.transfer(policyHolder, distributionWallet, premium.distributionFeeAndCommissionAmount);
|
438
|
+
tokenHandler.transfer(policyHolder, poolWallet, premium.poolPremiumAndFeeAmount);
|
439
|
+
}
|
373
440
|
|
374
|
-
|
441
|
+
|
442
|
+
function _getTokenHandlerAndProductWallet(
|
443
|
+
InstanceReader instanceReader,
|
444
|
+
NftId productNftId
|
445
|
+
)
|
446
|
+
internal
|
447
|
+
virtual
|
448
|
+
view
|
449
|
+
returns (
|
450
|
+
TokenHandler tokenHandler
|
451
|
+
)
|
452
|
+
{
|
453
|
+
tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
454
|
+
}
|
455
|
+
|
456
|
+
function _getDistributionNftAndWallets(
|
457
|
+
InstanceReader instanceReader,
|
458
|
+
NftId productNftId
|
459
|
+
)
|
460
|
+
internal
|
461
|
+
virtual
|
462
|
+
view returns (
|
463
|
+
NftId distributionNftId,
|
464
|
+
address distributionWallet,
|
465
|
+
address poolWallet,
|
466
|
+
address productWallet
|
467
|
+
)
|
468
|
+
{
|
469
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
470
|
+
distributionNftId = productInfo.distributionNftId;
|
471
|
+
distributionWallet = instanceReader.getComponentInfo(distributionNftId).wallet;
|
472
|
+
poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).wallet;
|
473
|
+
productWallet = instanceReader.getComponentInfo(productNftId).wallet;
|
375
474
|
}
|
376
475
|
}
|
@@ -14,32 +14,20 @@ contract PolicyServiceManager is ProxyManager {
|
|
14
14
|
|
15
15
|
/// @dev initializes proxy manager with product service implementation
|
16
16
|
constructor(
|
17
|
-
address
|
18
|
-
|
17
|
+
address authority,
|
18
|
+
address registryAddress,
|
19
|
+
bytes32 salt
|
20
|
+
)
|
19
21
|
ProxyManager(registryAddress)
|
20
22
|
{
|
21
|
-
PolicyService svc = new PolicyService();
|
22
|
-
bytes memory data = abi.encode(registryAddress, address(this));
|
23
|
-
IVersionable versionable =
|
23
|
+
PolicyService svc = new PolicyService{salt: salt}();
|
24
|
+
bytes memory data = abi.encode(registryAddress, address(this), authority);
|
25
|
+
IVersionable versionable = deployDetermenistic(
|
24
26
|
address(svc),
|
25
|
-
data
|
27
|
+
data,
|
28
|
+
salt);
|
26
29
|
|
27
30
|
_policyService = PolicyService(address(versionable));
|
28
|
-
|
29
|
-
// Registry registry = Registry(registryAddress);
|
30
|
-
// address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
|
31
|
-
// RegistryService registryService = RegistryService(registryServiceAddress);
|
32
|
-
// TODO this must have a role or own nft to register service
|
33
|
-
//registryService.registerService(_productService);
|
34
|
-
|
35
|
-
// TODO no nft to link yet
|
36
|
-
// link ownership of instance service manager ot nft owner of instance service
|
37
|
-
//_linkToNftOwnable(
|
38
|
-
// address(registryAddress),
|
39
|
-
// address(_productService));
|
40
|
-
|
41
|
-
// implies that after this constructor call only upgrade functionality is available
|
42
|
-
// _isDeployed = true;
|
43
31
|
}
|
44
32
|
|
45
33
|
//--- view functions ----------------------------------------------------//
|