@etherisc/gif-next 0.0.2-e94f4c7-084 → 0.0.2-e964d24-516
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/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +45 -14
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +45 -14
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +24 -274
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +6 -6
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +252 -2210
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +21 -38
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +352 -2691
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +71 -53
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +233 -67
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -226
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +39 -124
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +6 -6
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +4 -4
- 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/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +696 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +57 -31
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +56 -25
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +153 -36
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +56 -25
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +708 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1376 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +493 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IClaimService.sol/IClaimService.json +230 -89
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +36 -354
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +37 -154
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +53 -22
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +6 -14
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +688 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/Product.sol/Product.json +53 -22
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +640 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -13
- 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 +6 -6
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +4 -4
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +21 -29
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -40
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +9 -9
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +14 -27
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/Component.sol/Component.json +38 -7
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +38 -14
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +38 -7
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +5 -13
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +8 -21
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +20 -33
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -21
- 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 +5 -13
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
- 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/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +523 -0
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +628 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/ClaimId.sol/ClaimIdLib.json +5 -5
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/NftId.sol/NftIdLib.json +5 -5
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/PayoutId.sol/PayoutIdLib.json +5 -5
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Referral.sol/ReferralLib.json +5 -5
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Seconds.sol/SecondsLib.json +3 -3
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +5 -5
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
- package/contracts/{components → distribution}/Distribution.sol +15 -14
- package/contracts/{instance/service → distribution}/DistributionService.sol +80 -163
- package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +5 -5
- package/contracts/{components → distribution}/IDistributionComponent.sol +7 -7
- package/contracts/{instance/service → distribution}/IDistributionService.sol +18 -30
- package/contracts/instance/BundleManager.sol +4 -4
- package/contracts/instance/IInstance.sol +37 -62
- package/contracts/instance/IInstanceService.sol +18 -13
- package/contracts/instance/Instance.sol +94 -175
- package/contracts/instance/InstanceAccessManager.sol +38 -24
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +68 -17
- package/contracts/instance/InstanceService.sol +96 -266
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +211 -0
- package/contracts/instance/ObjectManager.sol +4 -4
- package/contracts/instance/base/IKeyValueStore.sol +5 -5
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +6 -37
- package/contracts/instance/base/Lifecycle.sol +8 -5
- package/contracts/instance/module/IAccess.sol +2 -2
- package/contracts/instance/module/IBundle.sol +5 -5
- package/contracts/instance/module/IComponents.sol +8 -8
- package/contracts/instance/module/IDistribution.sol +7 -6
- package/contracts/instance/module/IPolicy.sol +12 -12
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/instance/module/ISetup.sol +4 -4
- package/contracts/instance/module/ITreasury.sol +2 -2
- package/contracts/{instance/service → pool}/BundleService.sol +84 -145
- package/contracts/{instance/service → pool}/BundleServiceManager.sol +5 -5
- package/contracts/{instance/service → pool}/IBundleService.sol +41 -25
- package/contracts/{components → pool}/IPoolComponent.sol +13 -12
- package/contracts/{instance/service → pool}/IPoolService.sol +26 -14
- package/contracts/{components → pool}/Pool.sol +18 -18
- package/contracts/{instance/service → pool}/PoolService.sol +125 -58
- package/contracts/{instance/service → pool}/PoolServiceManager.sol +5 -5
- package/contracts/product/ApplicationService.sol +186 -0
- package/contracts/{instance/service → product}/ApplicationServiceManager.sol +2 -2
- package/contracts/product/ClaimService.sol +437 -0
- package/contracts/{instance/service → product}/ClaimServiceManager.sol +2 -2
- package/contracts/{instance/service → product}/IApplicationService.sol +12 -28
- package/contracts/product/IClaimService.sol +90 -0
- package/contracts/product/IPolicyService.sol +80 -0
- package/contracts/product/IPricingService.sol +37 -0
- package/contracts/{components → product}/IProductComponent.sol +11 -10
- package/contracts/{instance/service → product}/IProductService.sol +10 -10
- package/contracts/product/PolicyService.sol +376 -0
- package/contracts/{instance/service → product}/PolicyServiceManager.sol +5 -5
- package/contracts/product/PricingService.sol +275 -0
- package/contracts/product/PricingServiceManager.sol +51 -0
- package/contracts/{components → product}/Product.sol +37 -33
- package/contracts/{instance/service → product}/ProductService.sol +46 -46
- package/contracts/{instance/service → product}/ProductServiceManager.sol +5 -5
- package/contracts/registry/IRegistry.sol +4 -4
- package/contracts/registry/IRegistryService.sol +4 -6
- package/contracts/registry/Registry.sol +3 -3
- package/contracts/registry/RegistryAccessManager.sol +1 -1
- package/contracts/registry/RegistryService.sol +23 -20
- package/contracts/registry/RegistryServiceManager.sol +0 -2
- package/contracts/registry/ReleaseManager.sol +5 -5
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/{components → shared}/Component.sol +26 -8
- package/contracts/{instance/base → shared}/ComponentService.sol +63 -34
- package/contracts/{components → shared}/IComponent.sol +19 -5
- package/contracts/shared/INftOwnable.sol +1 -1
- package/contracts/shared/IPolicyHolder.sol +24 -10
- package/contracts/shared/IRegistryLinked.sol +0 -1
- package/contracts/shared/IService.sol +3 -1
- package/contracts/shared/IVersionable.sol +1 -1
- package/contracts/shared/NftOwnable.sol +1 -3
- package/contracts/shared/PolicyHolder.sol +31 -18
- package/contracts/shared/ProxyManager.sol +3 -3
- package/contracts/shared/Registerable.sol +12 -11
- package/contracts/shared/RegistryLinked.sol +0 -5
- package/contracts/shared/Service.sol +3 -3
- package/contracts/shared/TokenHandler.sol +4 -2
- package/contracts/shared/Versionable.sol +1 -1
- package/contracts/staking/IStakingService.sol +102 -0
- package/contracts/staking/StakeingServiceManager.sol +37 -0
- package/contracts/staking/StakingService.sol +166 -0
- package/contracts/{types → type}/Amount.sol +39 -0
- package/contracts/{types → type}/Fee.sol +7 -6
- package/contracts/{types → type}/NftIdSet.sol +1 -1
- package/contracts/{types → type}/ObjectType.sol +5 -1
- package/package.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1060
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -681
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1289
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -725
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -1040
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -685
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1774
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -793
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1543
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -741
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1449
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -709
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
- package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
- package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -209
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/contracts/instance/service/ApplicationService.sol +0 -355
- package/contracts/instance/service/ClaimService.sol +0 -239
- package/contracts/instance/service/IClaimService.sol +0 -92
- package/contracts/instance/service/IPolicyService.sol +0 -139
- package/contracts/instance/service/PolicyService.sol +0 -571
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -25
- package/contracts/test/TestToken.sol +0 -26
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/test/Usdc.sol +0 -26
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NumberId.sol +0 -52
- /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
- /package/contracts/{types → type}/AddressSet.sol +0 -0
- /package/contracts/{types → type}/Blocknumber.sol +0 -0
- /package/contracts/{types → type}/ClaimId.sol +0 -0
- /package/contracts/{types → type}/DistributorType.sol +0 -0
- /package/contracts/{types → type}/Key32.sol +0 -0
- /package/contracts/{types → type}/NftId.sol +0 -0
- /package/contracts/{types → type}/PayoutId.sol +0 -0
- /package/contracts/{types → type}/Referral.sol +0 -0
- /package/contracts/{types → type}/RiskId.sol +0 -0
- /package/contracts/{types → type}/RoleId.sol +0 -0
- /package/contracts/{types → type}/Seconds.sol +0 -0
- /package/contracts/{types → type}/StateId.sol +0 -0
- /package/contracts/{types → type}/Timestamp.sol +0 -0
- /package/contracts/{types → type}/UFixed.sol +0 -0
- /package/contracts/{types → type}/Version.sol +0 -0
@@ -1,571 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
|
-
import {Product} from "../../components/Product.sol";
|
6
|
-
import {IComponents} from "../module/IComponents.sol";
|
7
|
-
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
8
|
-
import {IInstance} from "../IInstance.sol";
|
9
|
-
import {IPolicy} from "../module/IPolicy.sol";
|
10
|
-
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
11
|
-
import {IRisk} from "../module/IRisk.sol";
|
12
|
-
import {IBundle} from "../module/IBundle.sol";
|
13
|
-
import {ISetup} from "../module/ISetup.sol";
|
14
|
-
|
15
|
-
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
16
|
-
|
17
|
-
import {Amount, AmountLib} from "../../types/Amount.sol";
|
18
|
-
import {ClaimId, ClaimIdLib} from "../../types/ClaimId.sol";
|
19
|
-
import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
20
|
-
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
21
|
-
import {ObjectType, APPLICATION, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM} from "../../types/ObjectType.sol";
|
22
|
-
import {APPLIED, COLLATERALIZED, ACTIVE, KEEP_STATE, CLOSED, DECLINED, CONFIRMED} from "../../types/StateId.sol";
|
23
|
-
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
24
|
-
import {PayoutId, PayoutIdLib} from "../../types/PayoutId.sol";
|
25
|
-
import {StateId} from "../../types/StateId.sol";
|
26
|
-
import {VersionPart} from "../../types/Version.sol";
|
27
|
-
|
28
|
-
import {ComponentService} from "../base/ComponentService.sol";
|
29
|
-
import {IApplicationService} from "./IApplicationService.sol";
|
30
|
-
import {IBundleService} from "./IBundleService.sol";
|
31
|
-
import {IClaimService} from "./IClaimService.sol";
|
32
|
-
import {IDistributionService} from "./IDistributionService.sol";
|
33
|
-
import {InstanceReader} from "../InstanceReader.sol";
|
34
|
-
import {IPolicyService} from "./IPolicyService.sol";
|
35
|
-
import {IPoolService} from "./IPoolService.sol";
|
36
|
-
import {IService} from "../../shared/IService.sol";
|
37
|
-
import {Service} from "../../shared/Service.sol";
|
38
|
-
|
39
|
-
|
40
|
-
contract PolicyService is
|
41
|
-
ComponentService,
|
42
|
-
IPolicyService
|
43
|
-
{
|
44
|
-
using NftIdLib for NftId;
|
45
|
-
using TimestampLib for Timestamp;
|
46
|
-
|
47
|
-
IApplicationService internal _applicationService;
|
48
|
-
IBundleService internal _bundleService;
|
49
|
-
IClaimService internal _claimService;
|
50
|
-
IDistributionService internal _distributionService;
|
51
|
-
IPoolService internal _poolService;
|
52
|
-
|
53
|
-
event LogProductServiceSender(address sender);
|
54
|
-
|
55
|
-
function _initialize(
|
56
|
-
address owner,
|
57
|
-
bytes memory data
|
58
|
-
)
|
59
|
-
internal
|
60
|
-
virtual override
|
61
|
-
initializer
|
62
|
-
{
|
63
|
-
address registryAddress;
|
64
|
-
address initialOwner;
|
65
|
-
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
66
|
-
|
67
|
-
initializeService(registryAddress, address(0), owner);
|
68
|
-
|
69
|
-
VersionPart majorVersion = getVersion().toMajorPart();
|
70
|
-
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
71
|
-
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
72
|
-
_claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
|
73
|
-
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
74
|
-
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
75
|
-
|
76
|
-
registerInterface(type(IPolicyService).interfaceId);
|
77
|
-
}
|
78
|
-
|
79
|
-
|
80
|
-
function getDomain() public pure override returns(ObjectType) {
|
81
|
-
return POLICY();
|
82
|
-
}
|
83
|
-
|
84
|
-
|
85
|
-
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
86
|
-
IRegistry.ObjectInfo memory productInfo;
|
87
|
-
(, productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
88
|
-
product = Product(productInfo.objectAddress);
|
89
|
-
}
|
90
|
-
|
91
|
-
|
92
|
-
function decline(
|
93
|
-
NftId policyNftId
|
94
|
-
)
|
95
|
-
external
|
96
|
-
override
|
97
|
-
{
|
98
|
-
require(false, "ERROR:PRS-235:NOT_YET_IMPLEMENTED");
|
99
|
-
}
|
100
|
-
|
101
|
-
|
102
|
-
/// @dev underwites application which includes the locking of the required collateral from the pool.
|
103
|
-
function collateralize(
|
104
|
-
NftId applicationNftId, // = policyNftId
|
105
|
-
bool requirePremiumPayment,
|
106
|
-
Timestamp activateAt
|
107
|
-
)
|
108
|
-
external
|
109
|
-
virtual override
|
110
|
-
{
|
111
|
-
// check caller is registered product
|
112
|
-
(NftId productNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
113
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
114
|
-
|
115
|
-
// check policy matches with calling product
|
116
|
-
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
117
|
-
|
118
|
-
if (applicationInfo.productNftId != productNftId) {
|
119
|
-
revert ErrorPolicyServiceProductMismatch(applicationNftId, applicationInfo.productNftId, productNftId);
|
120
|
-
}
|
121
|
-
|
122
|
-
// check policy is in state applied
|
123
|
-
// require(instanceReader.getPolicyState(applicationNftId) == APPLIED(), "ERROR:PRS-021:STATE_NOT_APPLIED");
|
124
|
-
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
125
|
-
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
126
|
-
}
|
127
|
-
|
128
|
-
StateId newPolicyState = COLLATERALIZED();
|
129
|
-
|
130
|
-
// optional activation of policy
|
131
|
-
if(activateAt > zeroTimestamp()) {
|
132
|
-
newPolicyState = ACTIVE();
|
133
|
-
applicationInfo.activatedAt = activateAt;
|
134
|
-
applicationInfo.expiredAt = activateAt.addSeconds(applicationInfo.lifetime);
|
135
|
-
}
|
136
|
-
|
137
|
-
// lock bundle collateral
|
138
|
-
uint256 netPremiumAmount = 0; // > 0 if immediate premium payment
|
139
|
-
|
140
|
-
// optional collection of premium
|
141
|
-
if(requirePremiumPayment) {
|
142
|
-
netPremiumAmount = _processPremiumByTreasury(
|
143
|
-
instance,
|
144
|
-
applicationNftId,
|
145
|
-
applicationInfo.premiumAmount);
|
146
|
-
|
147
|
-
applicationInfo.premiumPaidAmount += applicationInfo.premiumAmount;
|
148
|
-
}
|
149
|
-
|
150
|
-
// store updated policy info
|
151
|
-
instance.updatePolicy(applicationNftId, applicationInfo, newPolicyState);
|
152
|
-
|
153
|
-
// lock collateral and update pool and bundle book keeping
|
154
|
-
// pool retention level: fraction of sum insured that product will cover from pool funds directly
|
155
|
-
// eg retention level 30%, payouts up to 30% of the sum insured will be made from the product's pool directly
|
156
|
-
// for the remaining 70% the pool owns a policy that will cover claims that exceed the 30% of the sum insured
|
157
|
-
// might also call pool component (for isVerifyingApplications pools)
|
158
|
-
_poolService.lockCollateral(
|
159
|
-
instance,
|
160
|
-
productNftId,
|
161
|
-
applicationNftId,
|
162
|
-
applicationInfo,
|
163
|
-
netPremiumAmount); // for pool book keeping (fee + additional capital)
|
164
|
-
|
165
|
-
// TODO: add logging
|
166
|
-
}
|
167
|
-
|
168
|
-
|
169
|
-
function calculateRequiredCollateral(UFixed collateralizationLevel, uint256 sumInsuredAmount) public pure override returns(uint256 collateralAmount) {
|
170
|
-
UFixed sumInsuredUFixed = UFixedLib.toUFixed(sumInsuredAmount);
|
171
|
-
UFixed collateralUFixed = collateralizationLevel * sumInsuredUFixed;
|
172
|
-
return collateralUFixed.toInt();
|
173
|
-
}
|
174
|
-
|
175
|
-
function collectPremium(NftId policyNftId, Timestamp activateAt) external override {
|
176
|
-
// check caller is registered product
|
177
|
-
(NftId productNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
178
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
179
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
180
|
-
|
181
|
-
if (policyInfo.premiumPaidAmount == policyInfo.premiumAmount) {
|
182
|
-
revert ErrorIPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
|
183
|
-
}
|
184
|
-
|
185
|
-
uint256 unpaidPremiumAmount = policyInfo.premiumAmount - policyInfo.premiumPaidAmount;
|
186
|
-
|
187
|
-
uint256 netPremiumAmount = _processPremiumByTreasury(
|
188
|
-
instance,
|
189
|
-
policyNftId,
|
190
|
-
unpaidPremiumAmount);
|
191
|
-
|
192
|
-
policyInfo.premiumPaidAmount += unpaidPremiumAmount;
|
193
|
-
|
194
|
-
_bundleService.increaseBalance(instance, policyInfo.bundleNftId, netPremiumAmount);
|
195
|
-
instance.updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
196
|
-
|
197
|
-
if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
|
198
|
-
activate(policyNftId, activateAt);
|
199
|
-
}
|
200
|
-
|
201
|
-
// TODO: add logging
|
202
|
-
}
|
203
|
-
|
204
|
-
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
205
|
-
// check caller is registered product
|
206
|
-
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
207
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
208
|
-
|
209
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
210
|
-
|
211
|
-
require(
|
212
|
-
policyInfo.activatedAt.eqz(),
|
213
|
-
"ERROR:PRS-020:ALREADY_ACTIVATED");
|
214
|
-
|
215
|
-
policyInfo.activatedAt = activateAt;
|
216
|
-
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
217
|
-
|
218
|
-
instance.updatePolicy(policyNftId, policyInfo, ACTIVE());
|
219
|
-
|
220
|
-
// TODO: add logging
|
221
|
-
}
|
222
|
-
|
223
|
-
|
224
|
-
function expire(
|
225
|
-
NftId policyNftId
|
226
|
-
)
|
227
|
-
external
|
228
|
-
override
|
229
|
-
// solhint-disable-next-line no-empty-blocks
|
230
|
-
{
|
231
|
-
|
232
|
-
}
|
233
|
-
|
234
|
-
function close(
|
235
|
-
NftId policyNftId
|
236
|
-
)
|
237
|
-
external
|
238
|
-
override
|
239
|
-
{
|
240
|
-
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
241
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
242
|
-
|
243
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
244
|
-
|
245
|
-
if (policyInfo.activatedAt.eqz()) {
|
246
|
-
revert ErrorIPolicyServicePolicyNotActivated(policyNftId);
|
247
|
-
}
|
248
|
-
|
249
|
-
StateId state = instanceReader.getPolicyState(policyNftId);
|
250
|
-
if (state != ACTIVE()) {
|
251
|
-
revert ErrorIPolicyServicePolicyNotActive(policyNftId, state);
|
252
|
-
}
|
253
|
-
|
254
|
-
if (policyInfo.closedAt.gtz()) {
|
255
|
-
revert ErrorIPolicyServicePolicyAlreadyClosed(policyNftId);
|
256
|
-
}
|
257
|
-
|
258
|
-
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
259
|
-
if (policyInfo.premiumAmount != policyInfo.premiumPaidAmount) {
|
260
|
-
revert ErrorIPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
|
261
|
-
}
|
262
|
-
|
263
|
-
if (policyInfo.openClaimsCount > 0) {
|
264
|
-
revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
265
|
-
}
|
266
|
-
|
267
|
-
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
268
|
-
|
269
|
-
_poolService.releaseCollateral(
|
270
|
-
instance,
|
271
|
-
policyNftId,
|
272
|
-
policyInfo);
|
273
|
-
|
274
|
-
instance.updatePolicy(policyNftId, policyInfo, CLOSED());
|
275
|
-
}
|
276
|
-
|
277
|
-
function submitClaim(
|
278
|
-
NftId policyNftId,
|
279
|
-
Amount claimAmount,
|
280
|
-
bytes memory claimData
|
281
|
-
)
|
282
|
-
external
|
283
|
-
virtual
|
284
|
-
returns (ClaimId claimId)
|
285
|
-
{
|
286
|
-
(
|
287
|
-
IInstance instance,
|
288
|
-
InstanceReader instanceReader,
|
289
|
-
IPolicy.PolicyInfo memory policyInfo
|
290
|
-
) = _verifyCallerWithPolicy(policyNftId);
|
291
|
-
|
292
|
-
// check policy is in its active period
|
293
|
-
if(policyInfo.activatedAt.eqz() || TimestampLib.blockTimestamp() >= policyInfo.expiredAt) {
|
294
|
-
revert ErrorPolicyServicePolicyNotOpen(policyNftId);
|
295
|
-
}
|
296
|
-
|
297
|
-
// check policy including this claim is still within sum insured
|
298
|
-
if(policyInfo.payoutAmount.toInt() + claimAmount.toInt() > policyInfo.sumInsuredAmount) {
|
299
|
-
revert ErrorPolicyServiceClaimExceedsSumInsured(
|
300
|
-
policyNftId,
|
301
|
-
AmountLib.toAmount(policyInfo.sumInsuredAmount),
|
302
|
-
AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
|
303
|
-
}
|
304
|
-
|
305
|
-
// create new claim
|
306
|
-
claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
|
307
|
-
_claimService.submit(instance, policyNftId, claimId, claimAmount, claimData);
|
308
|
-
|
309
|
-
// update and save policy info with instance
|
310
|
-
policyInfo.claimsCount += 1;
|
311
|
-
policyInfo.openClaimsCount += 1;
|
312
|
-
instance.updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
313
|
-
|
314
|
-
emit LogPolicyServiceClaimSubmitted(policyNftId, claimId, claimAmount);
|
315
|
-
}
|
316
|
-
|
317
|
-
function confirmClaim(
|
318
|
-
NftId policyNftId,
|
319
|
-
ClaimId claimId,
|
320
|
-
Amount confirmedAmount
|
321
|
-
)
|
322
|
-
external
|
323
|
-
{
|
324
|
-
(
|
325
|
-
IInstance instance,
|
326
|
-
InstanceReader instanceReader,
|
327
|
-
IPolicy.PolicyInfo memory policyInfo
|
328
|
-
) = _verifyCallerWithPolicy(policyNftId);
|
329
|
-
|
330
|
-
// check/update claim info
|
331
|
-
_claimService.confirm(instance, instanceReader, policyNftId, claimId, confirmedAmount);
|
332
|
-
|
333
|
-
// update and save policy info with instance
|
334
|
-
instance.updatePolicy(policyNftId, policyInfo, CONFIRMED());
|
335
|
-
|
336
|
-
emit LogPolicyServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
337
|
-
}
|
338
|
-
|
339
|
-
function declineClaim(
|
340
|
-
NftId policyNftId,
|
341
|
-
ClaimId claimId
|
342
|
-
)
|
343
|
-
external
|
344
|
-
{
|
345
|
-
(
|
346
|
-
IInstance instance,
|
347
|
-
InstanceReader instanceReader,
|
348
|
-
IPolicy.PolicyInfo memory policyInfo
|
349
|
-
) = _verifyCallerWithPolicy(policyNftId);
|
350
|
-
|
351
|
-
// check/update claim info
|
352
|
-
_claimService.decline(instance, instanceReader, policyNftId, claimId);
|
353
|
-
|
354
|
-
// update and save policy info with instance
|
355
|
-
policyInfo.openClaimsCount -= 1;
|
356
|
-
instance.updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
357
|
-
|
358
|
-
emit LogPolicyServiceClaimDeclined(policyNftId, claimId);
|
359
|
-
}
|
360
|
-
|
361
|
-
function closeClaim(
|
362
|
-
NftId policyNftId,
|
363
|
-
ClaimId claimId
|
364
|
-
)
|
365
|
-
external
|
366
|
-
{
|
367
|
-
(
|
368
|
-
IInstance instance,
|
369
|
-
InstanceReader instanceReader,
|
370
|
-
IPolicy.PolicyInfo memory policyInfo
|
371
|
-
) = _verifyCallerWithPolicy(policyNftId);
|
372
|
-
|
373
|
-
// check/update claim info
|
374
|
-
_claimService.close(instance, instanceReader, policyNftId, claimId);
|
375
|
-
|
376
|
-
// update and save policy info with instance
|
377
|
-
policyInfo.openClaimsCount -= 1;
|
378
|
-
instance.updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
379
|
-
|
380
|
-
emit LogPolicyServiceClaimClosed(policyNftId, claimId);
|
381
|
-
}
|
382
|
-
|
383
|
-
function createPayout(
|
384
|
-
NftId policyNftId,
|
385
|
-
ClaimId claimId,
|
386
|
-
Amount amount,
|
387
|
-
bytes memory data
|
388
|
-
)
|
389
|
-
external
|
390
|
-
returns (PayoutId payoutId)
|
391
|
-
{
|
392
|
-
(
|
393
|
-
IInstance instance,
|
394
|
-
InstanceReader instanceReader,
|
395
|
-
IPolicy.PolicyInfo memory policyInfo
|
396
|
-
) = _verifyCallerWithPolicy(policyNftId);
|
397
|
-
|
398
|
-
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
399
|
-
StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
|
400
|
-
|
401
|
-
// TODO add checks
|
402
|
-
// claim needs to be open
|
403
|
-
// claim.paidAmount + amount <= claim.claimAmount
|
404
|
-
|
405
|
-
// check/update claim info
|
406
|
-
uint8 claimNo = claimInfo.payoutsCount + 1;
|
407
|
-
payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
|
408
|
-
_claimService.createPayout(
|
409
|
-
instance,
|
410
|
-
policyNftId,
|
411
|
-
payoutId,
|
412
|
-
amount,
|
413
|
-
data);
|
414
|
-
|
415
|
-
// update and save policy info with instance
|
416
|
-
policyInfo.payoutAmount.add(amount);
|
417
|
-
instance.updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
418
|
-
|
419
|
-
emit LogPolicyServicePayoutCreated(policyNftId, payoutId, amount);
|
420
|
-
}
|
421
|
-
|
422
|
-
function processPayout(
|
423
|
-
NftId policyNftId,
|
424
|
-
PayoutId payoutId
|
425
|
-
)
|
426
|
-
external
|
427
|
-
{
|
428
|
-
(
|
429
|
-
IInstance instance,
|
430
|
-
InstanceReader instanceReader,
|
431
|
-
IPolicy.PolicyInfo memory policyInfo
|
432
|
-
) = _verifyCallerWithPolicy(policyNftId);
|
433
|
-
|
434
|
-
// check/update claim info
|
435
|
-
(
|
436
|
-
Amount amount,
|
437
|
-
bool payoutIsClosingClaim
|
438
|
-
) = _claimService.processPayout(
|
439
|
-
instance,
|
440
|
-
instanceReader,
|
441
|
-
policyNftId,
|
442
|
-
payoutId);
|
443
|
-
|
444
|
-
// update policy info if affected by processed payout
|
445
|
-
if(payoutIsClosingClaim) {
|
446
|
-
policyInfo.openClaimsCount -= 1;
|
447
|
-
instance.updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
448
|
-
}
|
449
|
-
|
450
|
-
emit LogPolicyServicePayoutProcessed(policyNftId, payoutId, amount);
|
451
|
-
}
|
452
|
-
|
453
|
-
function _verifyCallerWithPolicy(
|
454
|
-
NftId policyNftId
|
455
|
-
)
|
456
|
-
internal
|
457
|
-
returns (
|
458
|
-
IInstance instance,
|
459
|
-
InstanceReader instanceReader,
|
460
|
-
IPolicy.PolicyInfo memory policyInfo
|
461
|
-
)
|
462
|
-
{
|
463
|
-
NftId productNftId;
|
464
|
-
(productNftId,, instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
465
|
-
instanceReader = instance.getInstanceReader();
|
466
|
-
|
467
|
-
// check caller(product) policy match
|
468
|
-
policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
469
|
-
if(policyInfo.productNftId != productNftId) {
|
470
|
-
revert ErrorPolicyServiceProductMismatch(policyNftId,
|
471
|
-
policyInfo.productNftId,
|
472
|
-
productNftId);
|
473
|
-
}
|
474
|
-
}
|
475
|
-
|
476
|
-
function _getPoolNftId(
|
477
|
-
IInstance instance,
|
478
|
-
NftId productNftId
|
479
|
-
)
|
480
|
-
internal
|
481
|
-
view
|
482
|
-
returns (NftId poolNftid)
|
483
|
-
{
|
484
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
485
|
-
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
486
|
-
return productSetupInfo.poolNftId;
|
487
|
-
}
|
488
|
-
|
489
|
-
|
490
|
-
function _processPremiumByTreasury(
|
491
|
-
IInstance instance,
|
492
|
-
NftId policyNftId,
|
493
|
-
uint256 premiumExpectedAmount
|
494
|
-
)
|
495
|
-
internal
|
496
|
-
returns (uint256 netPremiumAmount)
|
497
|
-
{
|
498
|
-
// process token transfer(s)
|
499
|
-
if(premiumExpectedAmount == 0) {
|
500
|
-
return 0;
|
501
|
-
}
|
502
|
-
|
503
|
-
NftId productNftId = getRegistry().getObjectInfo(policyNftId).parentNftId;
|
504
|
-
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
505
|
-
IPolicy.Premium memory premium = _applicationService.calculatePremium(
|
506
|
-
productNftId,
|
507
|
-
policyInfo.riskId,
|
508
|
-
policyInfo.sumInsuredAmount,
|
509
|
-
policyInfo.lifetime,
|
510
|
-
policyInfo.applicationData,
|
511
|
-
policyInfo.bundleNftId,
|
512
|
-
policyInfo.referralId
|
513
|
-
);
|
514
|
-
|
515
|
-
if (premium.premiumAmount != premiumExpectedAmount) {
|
516
|
-
revert ErrorIPolicyServicePremiumMismatch(
|
517
|
-
policyNftId,
|
518
|
-
premiumExpectedAmount,
|
519
|
-
premium.premiumAmount);
|
520
|
-
}
|
521
|
-
|
522
|
-
address policyOwner = getRegistry().ownerOf(policyNftId);
|
523
|
-
ISetup.ProductSetupInfo memory productSetupInfo = instance.getInstanceReader().getProductSetupInfo(productNftId);
|
524
|
-
TokenHandler tokenHandler = productSetupInfo.tokenHandler;
|
525
|
-
if (tokenHandler.getToken().allowance(policyOwner, address(tokenHandler)) < premium.premiumAmount) {
|
526
|
-
revert ErrorIPolicyServiceInsufficientAllowance(policyOwner, address(tokenHandler), premium.premiumAmount);
|
527
|
-
}
|
528
|
-
|
529
|
-
uint256 productFeeAmountToTransfer = premium.productFeeFixAmount + premium.productFeeVarAmount;
|
530
|
-
uint256 distributionFeeAmountToTransfer = premium.distributionFeeFixAmount + premium.distributionFeeVarAmount - premium.discountAmount;
|
531
|
-
uint256 poolFeeAmountToTransfer = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
532
|
-
uint256 bundleFeeAmountToTransfer = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
533
|
-
uint256 poolAmountToTransfer = premium.netPremiumAmount + poolFeeAmountToTransfer + bundleFeeAmountToTransfer;
|
534
|
-
netPremiumAmount = premium.netPremiumAmount;
|
535
|
-
|
536
|
-
// move product fee to product wallet
|
537
|
-
{
|
538
|
-
address productWallet = productSetupInfo.wallet;
|
539
|
-
tokenHandler.transfer(policyOwner, productWallet, productFeeAmountToTransfer);
|
540
|
-
}
|
541
|
-
|
542
|
-
// move distribution fee to distribution wallet
|
543
|
-
{
|
544
|
-
ISetup.DistributionSetupInfo memory distributionSetupInfo = instance.getInstanceReader().getDistributionSetupInfo(productSetupInfo.distributionNftId);
|
545
|
-
address distributionWallet = distributionSetupInfo.wallet;
|
546
|
-
tokenHandler.transfer(policyOwner, distributionWallet, distributionFeeAmountToTransfer);
|
547
|
-
_distributionService.processSale(productSetupInfo.distributionNftId, policyInfo.referralId, premium, distributionFeeAmountToTransfer);
|
548
|
-
}
|
549
|
-
|
550
|
-
// move netpremium, bundleFee and poolFee to pool wallet
|
551
|
-
{
|
552
|
-
address poolWallet = instance.getInstanceReader().getComponentInfo(productSetupInfo.poolNftId).wallet;
|
553
|
-
tokenHandler.transfer(policyOwner, poolWallet, poolAmountToTransfer);
|
554
|
-
_poolService.processSale(policyInfo.bundleNftId, premium, poolAmountToTransfer);
|
555
|
-
}
|
556
|
-
|
557
|
-
// validate total amount transferred
|
558
|
-
{
|
559
|
-
uint256 totalTransferred = distributionFeeAmountToTransfer + poolAmountToTransfer + productFeeAmountToTransfer;
|
560
|
-
|
561
|
-
if (premium.premiumAmount != totalTransferred) {
|
562
|
-
revert ErrorPolicyServiceTransferredPremiumMismatch(
|
563
|
-
policyNftId,
|
564
|
-
premium.premiumAmount,
|
565
|
-
totalTransferred);
|
566
|
-
}
|
567
|
-
}
|
568
|
-
|
569
|
-
// TODO: add logging
|
570
|
-
}
|
571
|
-
}
|
@@ -1,72 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.20;
|
3
|
-
|
4
|
-
library ContractDeployerLib {
|
5
|
-
|
6
|
-
event LogContractDeployed(address contractAddress);
|
7
|
-
|
8
|
-
error ErrorCreationCodeHashMismatch(bytes32 expectedHash, bytes32 actualHash);
|
9
|
-
|
10
|
-
/// @dev deploys a new contract using the provided creation code
|
11
|
-
function deploy(
|
12
|
-
bytes memory creationCode,
|
13
|
-
bytes32 expectedCreationCodeHash
|
14
|
-
)
|
15
|
-
public
|
16
|
-
returns (address contractAdress)
|
17
|
-
{
|
18
|
-
// check against expected hash, if provided
|
19
|
-
if (expectedCreationCodeHash != bytes32(0)) {
|
20
|
-
bytes32 creationCodeHash = getHash(creationCode);
|
21
|
-
if (creationCodeHash != expectedCreationCodeHash) {
|
22
|
-
revert ErrorCreationCodeHashMismatch(expectedCreationCodeHash, creationCodeHash);
|
23
|
-
}
|
24
|
-
}
|
25
|
-
|
26
|
-
// solhint-disable no-inline-assembly
|
27
|
-
assembly {
|
28
|
-
contractAdress := create(0, add(creationCode, 0x20), mload(creationCode))
|
29
|
-
|
30
|
-
if iszero(extcodesize(contractAdress)) {
|
31
|
-
revert(0, 0)
|
32
|
-
}
|
33
|
-
}
|
34
|
-
// solhint enable
|
35
|
-
|
36
|
-
emit LogContractDeployed(contractAdress);
|
37
|
-
}
|
38
|
-
|
39
|
-
/// @dev gets the creation code for the new contract
|
40
|
-
// for terminology see eg https://www.rareskills.io/post/ethereum-contract-creation-code
|
41
|
-
function getCreationCode(
|
42
|
-
bytes memory byteCodeWithInitCode, // what you get with type(<Contract>).creationCode
|
43
|
-
bytes memory encodedConstructorArguments // what you get with
|
44
|
-
)
|
45
|
-
public
|
46
|
-
pure
|
47
|
-
returns (bytes memory creationCode)
|
48
|
-
{
|
49
|
-
return abi.encodePacked(byteCodeWithInitCode, encodedConstructorArguments);
|
50
|
-
}
|
51
|
-
|
52
|
-
|
53
|
-
function matchesWithHash(
|
54
|
-
bytes memory creationCode,
|
55
|
-
bytes32 expectedHash
|
56
|
-
)
|
57
|
-
public
|
58
|
-
pure
|
59
|
-
returns (bool isMatching)
|
60
|
-
{
|
61
|
-
return getHash(creationCode) == expectedHash;
|
62
|
-
}
|
63
|
-
|
64
|
-
|
65
|
-
function getHash(bytes memory creationCode)
|
66
|
-
public
|
67
|
-
pure
|
68
|
-
returns (bytes32 hash)
|
69
|
-
{
|
70
|
-
return keccak256(creationCode);
|
71
|
-
}
|
72
|
-
}
|
@@ -1,25 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {UFixed, UFixedLib} from "../types/UFixed.sol";
|
5
|
-
import {Fee, FeeLib} from "../types/Fee.sol";
|
6
|
-
|
7
|
-
contract TestFee {
|
8
|
-
|
9
|
-
function createFee(
|
10
|
-
uint256 fractionalValue,
|
11
|
-
int8 exponent,
|
12
|
-
uint256 fixedValue
|
13
|
-
)
|
14
|
-
external
|
15
|
-
pure
|
16
|
-
returns(Fee memory fee)
|
17
|
-
{
|
18
|
-
return FeeLib.toFee(UFixedLib.toUFixed(fractionalValue, exponent), fixedValue);
|
19
|
-
}
|
20
|
-
|
21
|
-
function getZeroFee() external pure returns(Fee memory fee) {
|
22
|
-
return FeeLib.zeroFee();
|
23
|
-
}
|
24
|
-
|
25
|
-
}
|
@@ -1,18 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {NftId} from "../../contracts/types/NftId.sol";
|
5
|
-
import {ObjectType, TOKEN} from "../../contracts/types/ObjectType.sol";
|
6
|
-
import {IRegistry} from "../../contracts/registry/IRegistry.sol";
|
7
|
-
import {Registerable} from "../../contracts/shared/Registerable.sol";
|
8
|
-
|
9
|
-
contract TestRegisterable is Registerable {
|
10
|
-
|
11
|
-
constructor(address registry, NftId registryNftId, ObjectType objectType, bool isInterceptor, address initialOwner)
|
12
|
-
//Registerable(registry, registryNftId)
|
13
|
-
// solhint-disable-next-line no-empty-blocks
|
14
|
-
{
|
15
|
-
bytes memory data = "";
|
16
|
-
initializeRegisterable(registry, registryNftId, objectType, isInterceptor, initialOwner, data);
|
17
|
-
}
|
18
|
-
}
|
@@ -1,14 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {RoleId, RoleIdLib, PRODUCT_OWNER_ROLE_NAME, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE_NAME, POOL_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
|
5
|
-
|
6
|
-
contract TestRoleId {
|
7
|
-
function getRole(uint256 roleNum) external pure returns (RoleId) { return RoleIdLib.toRoleId(roleNum); }
|
8
|
-
|
9
|
-
function getProductOwnerRoleName() external pure returns (string memory) { return PRODUCT_OWNER_ROLE_NAME(); }
|
10
|
-
function getProductOwnerRole() external pure returns (RoleId) { return PRODUCT_OWNER_ROLE(); }
|
11
|
-
|
12
|
-
function getPoolOwnerRoleName() external pure returns (string memory) { return POOL_OWNER_ROLE_NAME(); }
|
13
|
-
function getPoolOwnerRole() external pure returns (RoleId) { return POOL_OWNER_ROLE(); }
|
14
|
-
}
|