@etherisc/gif-next 0.0.2-ceb30b2-601 → 0.0.2-cf22d7b-845
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 +4 -0
- package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +239 -155
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1349 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +118 -99
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +39 -307
- 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/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +254 -2310
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +72 -22
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +397 -2818
- 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 +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +204 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +507 -350
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +147 -193
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +113 -103
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3458 -0
- 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 +4 -0
- package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -1
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol}/ObjectManager.json +3 -3
- 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/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +45 -56
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +200 -97
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +144 -156
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +305 -103
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +499 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IClaimService.sol/IClaimService.json +30 -2
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +127 -71
- 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} +53 -136
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +284 -106
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +1 -56
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
- 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 +179 -29
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +304 -52
- 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 +415 -43
- 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 +337 -72
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +93 -41
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +824 -91
- 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 +316 -140
- 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 +4 -0
- package/artifacts/contracts/{components → shared}/Component.sol/Component.json +143 -76
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +17 -122
- 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 +4 -0
- package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +114 -75
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -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 +45 -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 +4 -0
- package/artifacts/contracts/{components/Product.sol/Product.json → shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json} +170 -288
- 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 +15 -9
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +56 -7
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +70 -22
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -9
- 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 +60 -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/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
- 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 +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
- 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 +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
- 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 +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 +345 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
- 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/type/NftId.sol/NftIdLib.json +209 -0
- 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/type/Seconds.sol/SecondsLib.json +198 -0
- 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 +41 -64
- package/contracts/distribution/DistributionService.sol +298 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/{components → distribution}/IDistributionComponent.sol +11 -16
- package/contracts/{instance/service → distribution}/IDistributionService.sol +19 -37
- package/contracts/instance/BundleManager.sol +5 -5
- package/contracts/instance/IInstance.sol +45 -70
- package/contracts/instance/IInstanceService.sol +29 -11
- package/contracts/instance/Instance.sol +112 -195
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
- package/contracts/instance/InstanceReader.sol +106 -58
- package/contracts/instance/InstanceService.sol +166 -288
- package/contracts/instance/InstanceServiceManager.sol +11 -21
- package/contracts/instance/InstanceStore.sol +260 -0
- package/contracts/instance/base/BalanceStore.sol +118 -0
- package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +1 -1
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +6 -6
- package/contracts/instance/module/IAccess.sol +4 -12
- package/contracts/instance/module/IBundle.sol +6 -9
- package/contracts/instance/module/IComponents.sol +21 -10
- package/contracts/instance/module/IDistribution.sol +7 -6
- package/contracts/instance/module/IPolicy.sol +20 -14
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
- package/contracts/pool/BundleService.sol +296 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/{instance/service → pool}/IBundleService.sol +33 -29
- package/contracts/{components → pool}/IPoolComponent.sol +16 -17
- package/contracts/{instance/service → pool}/IPoolService.sol +57 -51
- package/contracts/{components → pool}/Pool.sol +52 -55
- package/contracts/pool/PoolService.sol +453 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +254 -0
- package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
- package/contracts/{instance/service → product}/ClaimService.sol +167 -86
- package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
- package/contracts/{instance/service → product}/IApplicationService.sol +13 -29
- package/contracts/{instance/service → product}/IClaimService.sol +18 -15
- package/contracts/{instance/service → product}/IPolicyService.sol +24 -26
- package/contracts/product/IPricingService.sol +39 -0
- package/contracts/product/IProductComponent.sol +42 -0
- package/contracts/product/IProductService.sol +33 -0
- package/contracts/product/PolicyService.sol +475 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +301 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/{components → product}/Product.sol +83 -77
- package/contracts/product/ProductService.sol +124 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/ChainNft.sol +8 -1
- package/contracts/registry/IRegistry.sol +44 -21
- package/contracts/registry/IRegistryService.sol +37 -34
- package/contracts/registry/Registry.sol +191 -82
- package/contracts/registry/RegistryAdmin.sol +237 -0
- package/contracts/registry/RegistryService.sol +66 -82
- package/contracts/registry/RegistryServiceManager.sol +21 -25
- package/contracts/registry/ReleaseManager.sol +458 -183
- 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 +278 -0
- package/contracts/shared/ComponentService.sol +596 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +111 -0
- package/contracts/shared/ERC165.sol +1 -1
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/{components → shared}/IComponent.sol +23 -29
- package/contracts/shared/IComponentService.sol +91 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
- package/contracts/shared/INftOwnable.sol +2 -2
- package/contracts/shared/IPolicyHolder.sol +14 -7
- package/contracts/shared/IService.sol +2 -2
- package/contracts/shared/IVersionable.sol +1 -1
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +144 -0
- package/contracts/shared/KeyValueStore.sol +127 -0
- package/contracts/{instance/base → shared}/Lifecycle.sol +9 -5
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +3 -14
- package/contracts/shared/PolicyHolder.sol +32 -17
- package/contracts/shared/ProxyManager.sol +34 -4
- package/contracts/shared/Registerable.sol +3 -3
- package/contracts/shared/Service.sol +9 -4
- package/contracts/shared/TokenHandler.sol +27 -2
- package/contracts/shared/Versionable.sol +1 -1
- package/contracts/staking/IStaking.sol +168 -0
- package/contracts/staking/IStakingService.sol +149 -0
- package/contracts/staking/StakeManagerLib.sol +179 -0
- package/contracts/staking/Staking.sol +551 -0
- package/contracts/staking/StakingManager.sol +54 -0
- package/contracts/staking/StakingReader.sol +187 -0
- package/contracts/staking/StakingService.sol +406 -0
- package/contracts/staking/StakingServiceManager.sol +45 -0
- package/contracts/staking/StakingStore.sol +572 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/{types → type}/AddressSet.sol +1 -1
- package/contracts/{types → type}/Amount.sol +59 -1
- package/contracts/{types → type}/Blocknumber.sol +20 -3
- package/contracts/{types → type}/Fee.sol +24 -22
- package/contracts/{types → type}/NftId.sol +14 -16
- package/contracts/{types → type}/NftIdSet.sol +2 -2
- package/contracts/{types → type}/ObjectType.sol +15 -3
- package/contracts/{types → type}/Referral.sol +1 -1
- package/contracts/{types → type}/RiskId.sol +1 -1
- package/contracts/{types → type}/RoleId.sol +55 -9
- package/contracts/{types → type}/Seconds.sol +27 -0
- package/contracts/{types → type}/StateId.sol +17 -4
- package/contracts/{types → type}/Version.sol +1 -1
- package/package.json +3 -3
- 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/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
- 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 -532
- 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/ISetup.sol/ISetup.json +0 -10
- 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/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1092
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -672
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1313
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -712
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -1316
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -724
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -780
- 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 -1153
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -676
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1598
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -696
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -864
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -640
- 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/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 -370
- 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 -588
- 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/Blocknumber.sol/BlocknumberLib.json +0 -174
- 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/NftId.sol/NftIdLib.json +0 -166
- 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/Seconds.sol/SecondsLib.json +0 -124
- 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/components/Component.sol +0 -253
- package/contracts/components/IProductComponent.sol +0 -40
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
- package/contracts/instance/InstanceAccessManager.sol +0 -527
- package/contracts/instance/base/ComponentService.sol +0 -130
- package/contracts/instance/base/KeyValueStore.sol +0 -149
- package/contracts/instance/module/ISetup.sol +0 -33
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/ApplicationService.sol +0 -356
- package/contracts/instance/service/BundleService.sol +0 -443
- package/contracts/instance/service/BundleServiceManager.sol +0 -51
- package/contracts/instance/service/DistributionService.sol +0 -431
- package/contracts/instance/service/DistributionServiceManager.sol +0 -51
- package/contracts/instance/service/IProductService.sol +0 -40
- package/contracts/instance/service/PolicyService.sol +0 -358
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -349
- package/contracts/instance/service/PoolServiceManager.sol +0 -51
- package/contracts/instance/service/ProductService.sol +0 -210
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -216
- 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/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/{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}/PayoutId.sol +0 -0
- /package/contracts/{types → type}/Timestamp.sol +0 -0
- /package/contracts/{types → type}/UFixed.sol +0 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Seconds} from "../type/Seconds.sol";
|
5
|
+
import {NftId} from "../type/NftId.sol";
|
6
|
+
import {ReferralId} from "../type/Referral.sol";
|
7
|
+
import {RiskId} from "../type/RiskId.sol";
|
8
|
+
import {Amount} from "../type/Amount.sol";
|
9
|
+
|
10
|
+
import {IService} from "./IApplicationService.sol";
|
11
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
12
|
+
|
13
|
+
interface IPricingService is IService
|
14
|
+
{
|
15
|
+
|
16
|
+
error ErrorPricingServiceTargetWalletAmountsMismatch();
|
17
|
+
error ErrorIPricingServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
|
18
|
+
error ErrorIPricingServiceFeeCalculationMismatch(
|
19
|
+
uint256 distributionFeeFixAmount,
|
20
|
+
uint256 distributionFeeVarAmount,
|
21
|
+
uint256 distributionOwnerFeeFixAmount,
|
22
|
+
uint256 distributionOwnerFeeVarAmount,
|
23
|
+
uint256 commissionAmount,
|
24
|
+
uint256 discountAmount
|
25
|
+
);
|
26
|
+
|
27
|
+
function calculatePremium(
|
28
|
+
NftId productNftId,
|
29
|
+
RiskId riskId,
|
30
|
+
Amount sumInsuredAmount,
|
31
|
+
Seconds lifetime,
|
32
|
+
bytes memory applicationData,
|
33
|
+
NftId bundleNftId,
|
34
|
+
ReferralId referralId
|
35
|
+
)
|
36
|
+
external
|
37
|
+
view
|
38
|
+
returns (IPolicy.Premium memory premium);
|
39
|
+
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {Fee} from "../type/Fee.sol";
|
6
|
+
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
7
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
8
|
+
import {NftId} from "../type/NftId.sol";
|
9
|
+
import {ReferralId} from "../type/Referral.sol";
|
10
|
+
import {RiskId} from "../type/RiskId.sol";
|
11
|
+
import {Seconds} from "../type/Seconds.sol";
|
12
|
+
|
13
|
+
interface IProductComponent is IInstanceLinkedComponent {
|
14
|
+
|
15
|
+
function setFees(
|
16
|
+
Fee memory productFee,
|
17
|
+
Fee memory processingFee
|
18
|
+
) external;
|
19
|
+
|
20
|
+
function calculatePremium(
|
21
|
+
Amount sumInsuredAmount,
|
22
|
+
RiskId riskId,
|
23
|
+
Seconds lifetime,
|
24
|
+
bytes memory applicationData,
|
25
|
+
NftId bundleNftId,
|
26
|
+
ReferralId referralId
|
27
|
+
) external view returns (Amount premiumAmount);
|
28
|
+
|
29
|
+
function calculateNetPremium(
|
30
|
+
Amount sumInsuredAmount,
|
31
|
+
RiskId riskId,
|
32
|
+
Seconds lifetime,
|
33
|
+
bytes memory applicationData
|
34
|
+
) external view returns (Amount netPremiumAmount);
|
35
|
+
|
36
|
+
|
37
|
+
/// @dev returns initial pool specific infos for this pool
|
38
|
+
function getInitialProductInfo() external view returns (IComponents.ProductInfo memory info);
|
39
|
+
|
40
|
+
function getPoolNftId() external view returns (NftId poolNftId);
|
41
|
+
function getDistributionNftId() external view returns (NftId distributionNftId);
|
42
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IRisk} from "../instance/module/IRisk.sol";
|
5
|
+
import {IService} from "../shared/IService.sol";
|
6
|
+
|
7
|
+
import {NftId} from "../type/NftId.sol";
|
8
|
+
import {ReferralId} from "../type/Referral.sol";
|
9
|
+
import {RiskId} from "../type/RiskId.sol";
|
10
|
+
import {StateId} from "../type/StateId.sol";
|
11
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
12
|
+
import {UFixed} from "../type/UFixed.sol";
|
13
|
+
import {Fee} from "../type/Fee.sol";
|
14
|
+
|
15
|
+
interface IProductService is IService {
|
16
|
+
|
17
|
+
function createRisk(
|
18
|
+
RiskId riskId,
|
19
|
+
bytes memory data
|
20
|
+
) external;
|
21
|
+
|
22
|
+
|
23
|
+
function updateRisk(
|
24
|
+
RiskId riskId,
|
25
|
+
bytes memory data
|
26
|
+
) external;
|
27
|
+
|
28
|
+
|
29
|
+
function updateRiskState(
|
30
|
+
RiskId riskId,
|
31
|
+
StateId newState
|
32
|
+
) external;
|
33
|
+
}
|
@@ -0,0 +1,475 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
5
|
+
import {Product} from "./Product.sol";
|
6
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
7
|
+
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
8
|
+
import {IInstance} from "../instance/IInstance.sol";
|
9
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
10
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
11
|
+
import {IRisk} from "../instance/module/IRisk.sol";
|
12
|
+
import {IBundle} from "../instance/module/IBundle.sol";
|
13
|
+
|
14
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
15
|
+
|
16
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
17
|
+
import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
|
18
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
19
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
20
|
+
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
21
|
+
import {APPLIED, COLLATERALIZED, ACTIVE, KEEP_STATE, CLOSED, DECLINED, CONFIRMED} from "../type/StateId.sol";
|
22
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
23
|
+
import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
24
|
+
import {ReferralId} from "../type/Referral.sol";
|
25
|
+
import {StateId} from "../type/StateId.sol";
|
26
|
+
import {VersionPart} from "../type/Version.sol";
|
27
|
+
|
28
|
+
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
29
|
+
import {IApplicationService} from "./IApplicationService.sol";
|
30
|
+
import {IBundleService} from "../pool/IBundleService.sol";
|
31
|
+
import {IClaimService} from "./IClaimService.sol";
|
32
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
33
|
+
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
34
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
35
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
36
|
+
import {IPolicyService} from "./IPolicyService.sol";
|
37
|
+
import {IPoolService} from "../pool/IPoolService.sol";
|
38
|
+
import {IPricingService} from "./IPricingService.sol";
|
39
|
+
import {IService} from "../shared/IService.sol";
|
40
|
+
import {Service} from "../shared/Service.sol";
|
41
|
+
|
42
|
+
contract PolicyService is
|
43
|
+
ComponentVerifyingService,
|
44
|
+
IPolicyService
|
45
|
+
{
|
46
|
+
using NftIdLib for NftId;
|
47
|
+
using TimestampLib for Timestamp;
|
48
|
+
|
49
|
+
IApplicationService internal _applicationService;
|
50
|
+
IComponentService internal _componentService;
|
51
|
+
IBundleService internal _bundleService;
|
52
|
+
IClaimService internal _claimService;
|
53
|
+
IDistributionService internal _distributionService;
|
54
|
+
IPoolService internal _poolService;
|
55
|
+
IPricingService internal _pricingService;
|
56
|
+
|
57
|
+
event LogProductServiceSender(address sender);
|
58
|
+
|
59
|
+
function _initialize(
|
60
|
+
address owner,
|
61
|
+
bytes memory data
|
62
|
+
)
|
63
|
+
internal
|
64
|
+
virtual override
|
65
|
+
initializer
|
66
|
+
{
|
67
|
+
(
|
68
|
+
address registryAddress,,
|
69
|
+
//address managerAddress
|
70
|
+
address authority
|
71
|
+
) = abi.decode(data, (address, address, address));
|
72
|
+
|
73
|
+
initializeService(registryAddress, authority, owner);
|
74
|
+
|
75
|
+
VersionPart majorVersion = getVersion().toMajorPart();
|
76
|
+
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
77
|
+
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
78
|
+
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
79
|
+
_claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
|
80
|
+
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
81
|
+
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
82
|
+
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
83
|
+
|
84
|
+
registerInterface(type(IPolicyService).interfaceId);
|
85
|
+
}
|
86
|
+
|
87
|
+
|
88
|
+
function getDomain() public pure override returns(ObjectType) {
|
89
|
+
return POLICY();
|
90
|
+
}
|
91
|
+
|
92
|
+
|
93
|
+
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
94
|
+
IRegistry.ObjectInfo memory productInfo;
|
95
|
+
(, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
|
96
|
+
product = Product(productInfo.objectAddress);
|
97
|
+
}
|
98
|
+
|
99
|
+
|
100
|
+
function decline(
|
101
|
+
NftId policyNftId
|
102
|
+
)
|
103
|
+
external
|
104
|
+
override
|
105
|
+
{
|
106
|
+
revert();
|
107
|
+
}
|
108
|
+
|
109
|
+
event LogDebug(uint idx, string message);
|
110
|
+
|
111
|
+
/// @dev underwites application which includes the locking of the required collateral from the pool.
|
112
|
+
function collateralize(
|
113
|
+
NftId applicationNftId, // = policyNftId
|
114
|
+
bool requirePremiumPayment,
|
115
|
+
Timestamp activateAt
|
116
|
+
)
|
117
|
+
external
|
118
|
+
virtual override
|
119
|
+
{
|
120
|
+
// check caller is registered product
|
121
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
122
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
123
|
+
|
124
|
+
// check policy is in state applied
|
125
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
126
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
127
|
+
}
|
128
|
+
|
129
|
+
// check policy matches with calling product
|
130
|
+
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
131
|
+
if(applicationInfo.productNftId != productNftId) {
|
132
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
133
|
+
applicationNftId,
|
134
|
+
applicationInfo.productNftId,
|
135
|
+
productNftId);
|
136
|
+
}
|
137
|
+
|
138
|
+
StateId newPolicyState = COLLATERALIZED();
|
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
|
+
|
152
|
+
// optional activation of policy
|
153
|
+
if(activateAt > zeroTimestamp()) {
|
154
|
+
newPolicyState = ACTIVE();
|
155
|
+
applicationInfo.activatedAt = activateAt;
|
156
|
+
applicationInfo.expiredAt = activateAt.addSeconds(applicationInfo.lifetime);
|
157
|
+
}
|
158
|
+
|
159
|
+
// optional collection of premium
|
160
|
+
if(requirePremiumPayment) {
|
161
|
+
Amount premiumPaidAmount = _calculateAndCollectPremium(
|
162
|
+
instance,
|
163
|
+
applicationNftId,
|
164
|
+
applicationInfo);
|
165
|
+
|
166
|
+
applicationInfo.premiumPaidAmount = premiumPaidAmount;
|
167
|
+
}
|
168
|
+
|
169
|
+
// store updated policy info
|
170
|
+
instance.getInstanceStore().updatePolicy(
|
171
|
+
applicationNftId,
|
172
|
+
applicationInfo,
|
173
|
+
newPolicyState);
|
174
|
+
|
175
|
+
// TODO add calling pool contract if it needs to validate application
|
176
|
+
|
177
|
+
// TODO: add logging
|
178
|
+
}
|
179
|
+
|
180
|
+
|
181
|
+
function collectPremium(
|
182
|
+
NftId policyNftId,
|
183
|
+
Timestamp activateAt
|
184
|
+
)
|
185
|
+
external
|
186
|
+
virtual
|
187
|
+
{
|
188
|
+
// check caller is registered product
|
189
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
190
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
191
|
+
StateId stateId = instanceReader.getPolicyState(policyNftId);
|
192
|
+
|
193
|
+
// check policy is in state collateralized or active
|
194
|
+
if (!(stateId == COLLATERALIZED() || stateId == ACTIVE())) {
|
195
|
+
revert ErrorPolicyServicePolicyStateNotCollateralizedOrApplied(policyNftId);
|
196
|
+
}
|
197
|
+
|
198
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
199
|
+
|
200
|
+
// check if premium is already collected
|
201
|
+
if (policyInfo.premiumPaidAmount.gtz()) {
|
202
|
+
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
|
203
|
+
}
|
204
|
+
|
205
|
+
policyInfo.premiumPaidAmount = _calculateAndCollectPremium(
|
206
|
+
instance,
|
207
|
+
policyNftId,
|
208
|
+
policyInfo);
|
209
|
+
|
210
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
211
|
+
|
212
|
+
if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
|
213
|
+
activate(policyNftId, activateAt);
|
214
|
+
}
|
215
|
+
|
216
|
+
// TODO: add logging
|
217
|
+
}
|
218
|
+
|
219
|
+
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
220
|
+
// check caller is registered product
|
221
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
222
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
223
|
+
|
224
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
225
|
+
|
226
|
+
require(
|
227
|
+
policyInfo.activatedAt.eqz(),
|
228
|
+
"ERROR:PRS-020:ALREADY_ACTIVATED");
|
229
|
+
|
230
|
+
policyInfo.activatedAt = activateAt;
|
231
|
+
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
232
|
+
|
233
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, ACTIVE());
|
234
|
+
|
235
|
+
// TODO: add logging
|
236
|
+
}
|
237
|
+
|
238
|
+
|
239
|
+
function expire(
|
240
|
+
NftId policyNftId
|
241
|
+
)
|
242
|
+
external
|
243
|
+
override
|
244
|
+
// solhint-disable-next-line no-empty-blocks
|
245
|
+
{
|
246
|
+
|
247
|
+
}
|
248
|
+
|
249
|
+
function close(
|
250
|
+
NftId policyNftId
|
251
|
+
)
|
252
|
+
external
|
253
|
+
override
|
254
|
+
{
|
255
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
256
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
257
|
+
|
258
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
259
|
+
|
260
|
+
if (policyInfo.activatedAt.eqz()) {
|
261
|
+
revert ErrorIPolicyServicePolicyNotActivated(policyNftId);
|
262
|
+
}
|
263
|
+
|
264
|
+
StateId state = instanceReader.getPolicyState(policyNftId);
|
265
|
+
if (state != ACTIVE()) {
|
266
|
+
revert ErrorIPolicyServicePolicyNotActive(policyNftId, state);
|
267
|
+
}
|
268
|
+
|
269
|
+
if (policyInfo.closedAt.gtz()) {
|
270
|
+
revert ErrorIPolicyServicePolicyAlreadyClosed(policyNftId);
|
271
|
+
}
|
272
|
+
|
273
|
+
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
274
|
+
if (!(policyInfo.premiumAmount == policyInfo.premiumPaidAmount)) {
|
275
|
+
revert ErrorPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
|
276
|
+
}
|
277
|
+
|
278
|
+
if (policyInfo.openClaimsCount > 0) {
|
279
|
+
revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
280
|
+
}
|
281
|
+
|
282
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
283
|
+
|
284
|
+
_poolService.releaseCollateral(
|
285
|
+
instance,
|
286
|
+
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
287
|
+
policyNftId,
|
288
|
+
policyInfo);
|
289
|
+
|
290
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
291
|
+
}
|
292
|
+
|
293
|
+
|
294
|
+
function _calculateAndCollectPremium(
|
295
|
+
IInstance instance,
|
296
|
+
NftId applicationNftId,
|
297
|
+
IPolicy.PolicyInfo memory applicationInfo
|
298
|
+
)
|
299
|
+
internal
|
300
|
+
virtual
|
301
|
+
returns (
|
302
|
+
Amount premiumPaidAmount
|
303
|
+
)
|
304
|
+
{
|
305
|
+
NftId productNftId = applicationInfo.productNftId;
|
306
|
+
|
307
|
+
// calculate premium details
|
308
|
+
IPolicy.Premium memory premium = _pricingService.calculatePremium(
|
309
|
+
productNftId,
|
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
|
+
}
|
328
|
+
|
329
|
+
|
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
|
+
}
|
364
|
+
|
365
|
+
|
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);
|
380
|
+
}
|
381
|
+
|
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);
|
388
|
+
}
|
389
|
+
|
390
|
+
if (allowance < premiumAmount) {
|
391
|
+
revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, address(tokenHandler), premiumAmount, allowance);
|
392
|
+
}
|
393
|
+
}
|
394
|
+
|
395
|
+
|
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
|
+
}
|
440
|
+
|
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;
|
474
|
+
}
|
475
|
+
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../shared/ProxyManager.sol";
|
6
|
+
import {PolicyService} from "./PolicyService.sol";
|
7
|
+
import {Registry} from "../registry/Registry.sol";
|
8
|
+
import {RegistryService} from "../registry/RegistryService.sol";
|
9
|
+
import {VersionLib} from "../type/Version.sol";
|
10
|
+
|
11
|
+
contract PolicyServiceManager is ProxyManager {
|
12
|
+
|
13
|
+
PolicyService private _policyService;
|
14
|
+
|
15
|
+
/// @dev initializes proxy manager with product service implementation
|
16
|
+
constructor(
|
17
|
+
address authority,
|
18
|
+
address registryAddress,
|
19
|
+
bytes32 salt
|
20
|
+
)
|
21
|
+
ProxyManager(registryAddress)
|
22
|
+
{
|
23
|
+
PolicyService svc = new PolicyService{salt: salt}();
|
24
|
+
bytes memory data = abi.encode(registryAddress, address(this), authority);
|
25
|
+
IVersionable versionable = deployDetermenistic(
|
26
|
+
address(svc),
|
27
|
+
data,
|
28
|
+
salt);
|
29
|
+
|
30
|
+
_policyService = PolicyService(address(versionable));
|
31
|
+
}
|
32
|
+
|
33
|
+
//--- view functions ----------------------------------------------------//
|
34
|
+
function getPolicyService()
|
35
|
+
external
|
36
|
+
view
|
37
|
+
returns (PolicyService policyService)
|
38
|
+
{
|
39
|
+
return _policyService;
|
40
|
+
}
|
41
|
+
|
42
|
+
}
|