@etherisc/gif-next 0.0.2-b12de3e-067 → 0.0.2-b16cd64-952
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 +8 -13
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +842 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +753 -168
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +233 -81
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +848 -31
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +846 -57
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +682 -9
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +695 -258
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +529 -217
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +15 -15
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +69 -79
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1038 -395
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +306 -169
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +921 -1201
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +583 -193
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +137 -270
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +484 -384
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +308 -127
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +11 -40
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +258 -172
- 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 +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- 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/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1039 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +673 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +607 -299
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +360 -79
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +817 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +641 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1364 -250
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +450 -73
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +622 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +269 -279
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +217 -208
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +804 -160
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +205 -263
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +489 -144
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +86 -172
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +455 -347
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +329 -96
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +827 -308
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +311 -78
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +292 -220
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +309 -76
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +244 -133
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +149 -230
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +257 -235
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +200 -335
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -145
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +86 -172
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +191 -163
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +210 -214
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/Component.sol +253 -0
- package/contracts/components/Distribution.sol +200 -83
- package/contracts/components/IComponent.sol +76 -0
- package/contracts/components/IDistributionComponent.sol +44 -17
- package/contracts/components/IPoolComponent.sol +88 -41
- package/contracts/components/IProductComponent.sol +10 -5
- package/contracts/components/Pool.sol +217 -185
- package/contracts/components/Product.sol +125 -124
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +2 -12
- package/contracts/instance/BundleManager.sol +14 -16
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +52 -14
- package/contracts/instance/IInstanceService.sol +42 -4
- package/contracts/instance/Instance.sol +125 -262
- package/contracts/instance/InstanceAccessManager.sol +414 -175
- package/contracts/instance/InstanceReader.sol +10 -34
- package/contracts/instance/InstanceService.sol +334 -138
- package/contracts/instance/InstanceServiceManager.sol +6 -9
- package/contracts/instance/ObjectManager.sol +10 -29
- package/contracts/instance/base/ComponentService.sol +121 -0
- package/contracts/instance/base/KeyValueStore.sol +13 -5
- package/contracts/instance/base/Lifecycle.sol +11 -2
- package/contracts/instance/module/IAccess.sol +36 -20
- package/contracts/instance/module/IBundle.sol +8 -5
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +30 -3
- package/contracts/instance/module/ISetup.sol +7 -20
- package/contracts/instance/service/ApplicationService.sol +350 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +239 -68
- package/contracts/instance/service/BundleServiceManager.sol +6 -9
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +367 -50
- package/contracts/instance/service/DistributionServiceManager.sol +7 -10
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +67 -19
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +87 -0
- package/contracts/instance/service/IPolicyService.sol +34 -49
- package/contracts/instance/service/IPoolService.sol +82 -3
- package/contracts/instance/service/PolicyService.sol +201 -347
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +224 -45
- package/contracts/instance/service/PoolServiceManager.sol +6 -9
- package/contracts/instance/service/ProductService.sol +93 -56
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +9 -1
- package/contracts/registry/IRegistry.sol +39 -19
- package/contracts/registry/IRegistryService.sol +31 -13
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +243 -224
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +97 -173
- package/contracts/registry/RegistryServiceManager.sol +21 -39
- package/contracts/registry/ReleaseManager.sol +324 -0
- package/contracts/registry/TokenRegistry.sol +22 -17
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +5 -4
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +66 -80
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +16 -32
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +41 -24
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +4 -3
- package/contracts/types/Amount.sol +60 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +13 -5
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +10 -5
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +26 -21
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +1 -0
- package/contracts/types/Timestamp.sol +13 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -368
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
- package/contracts/components/BaseComponent.sol +0 -132
- package/contracts/components/IBaseComponent.sol +0 -31
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/IInstanceBase.sol +0 -26
- package/contracts/instance/InstanceBase.sol +0 -41
- package/contracts/instance/base/ComponentServiceBase.sol +0 -72
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -2,56 +2,48 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
|
-
import {IProductComponent} from "../../components/IProductComponent.sol";
|
6
5
|
import {Product} from "../../components/Product.sol";
|
7
|
-
import {
|
8
|
-
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
6
|
+
import {IComponents} from "../module/IComponents.sol";
|
9
7
|
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
10
8
|
import {IInstance} from "../IInstance.sol";
|
11
9
|
import {IPolicy} from "../module/IPolicy.sol";
|
10
|
+
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
12
11
|
import {IRisk} from "../module/IRisk.sol";
|
13
12
|
import {IBundle} from "../module/IBundle.sol";
|
14
|
-
import {IProductService} from "./IProductService.sol";
|
15
|
-
import {ITreasury} from "../module/ITreasury.sol";
|
16
13
|
import {ISetup} from "../module/ISetup.sol";
|
17
14
|
|
18
15
|
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
19
16
|
|
20
|
-
import {
|
21
|
-
import {Versionable} from "../../shared/Versionable.sol";
|
22
|
-
|
23
|
-
import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
17
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
24
18
|
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
25
|
-
import {
|
26
|
-
import {
|
27
|
-
import {
|
28
|
-
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
29
|
-
import {Fee, FeeLib} from "../../types/Fee.sol";
|
30
|
-
import {ReferralId} from "../../types/Referral.sol";
|
31
|
-
import {RiskId} from "../../types/RiskId.sol";
|
19
|
+
import {ObjectType, APPLICATION, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE} from "../../types/ObjectType.sol";
|
20
|
+
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
|
21
|
+
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
32
22
|
import {StateId} from "../../types/StateId.sol";
|
33
|
-
import {
|
34
|
-
//import {RoleId, PRODUCT_OWNER_ROLE} from "../../types/RoleId.sol";
|
23
|
+
import {VersionPart} from "../../types/Version.sol";
|
35
24
|
|
36
|
-
import {
|
37
|
-
import {
|
38
|
-
import {
|
39
|
-
import {
|
25
|
+
import {ComponentService} from "../base/ComponentService.sol";
|
26
|
+
import {IApplicationService} from "./IApplicationService.sol";
|
27
|
+
import {IBundleService} from "./IBundleService.sol";
|
28
|
+
import {IDistributionService} from "./IDistributionService.sol";
|
40
29
|
import {InstanceReader} from "../InstanceReader.sol";
|
30
|
+
import {IPolicyService} from "./IPolicyService.sol";
|
41
31
|
import {IPoolService} from "./IPoolService.sol";
|
42
|
-
import {
|
43
|
-
import {
|
44
|
-
import {BUNDLE_SERVICE_NAME} from "./BundleService.sol";
|
32
|
+
import {IService} from "../../shared/IService.sol";
|
33
|
+
import {Service} from "../../shared/Service.sol";
|
45
34
|
|
46
|
-
string constant POLICY_SERVICE_NAME = "PolicyService";
|
47
35
|
|
48
|
-
contract PolicyService is
|
36
|
+
contract PolicyService is
|
37
|
+
ComponentService,
|
38
|
+
IPolicyService
|
39
|
+
{
|
49
40
|
using NftIdLib for NftId;
|
50
|
-
|
51
|
-
string public constant NAME = "PolicyService";
|
41
|
+
using TimestampLib for Timestamp;
|
52
42
|
|
53
43
|
IPoolService internal _poolService;
|
54
44
|
IBundleService internal _bundleService;
|
45
|
+
IApplicationService internal _applicationService;
|
46
|
+
IDistributionService internal _distributionService;
|
55
47
|
|
56
48
|
event LogProductServiceSender(address sender);
|
57
49
|
|
@@ -60,338 +52,134 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
60
52
|
bytes memory data
|
61
53
|
)
|
62
54
|
internal
|
63
|
-
initializer
|
64
55
|
virtual override
|
56
|
+
initializer
|
65
57
|
{
|
66
58
|
address registryAddress;
|
67
59
|
address initialOwner;
|
68
60
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
69
61
|
|
70
|
-
|
62
|
+
initializeService(registryAddress, address(0), owner);
|
71
63
|
|
72
|
-
|
73
|
-
|
64
|
+
VersionPart majorVersion = getVersion().toMajorPart();
|
65
|
+
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
66
|
+
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
67
|
+
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
68
|
+
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
74
69
|
|
75
|
-
|
70
|
+
registerInterface(type(IPolicyService).interfaceId);
|
76
71
|
}
|
77
72
|
|
78
73
|
|
79
|
-
function
|
80
|
-
return
|
74
|
+
function getDomain() public pure override returns(ObjectType) {
|
75
|
+
return POLICY();
|
81
76
|
}
|
82
77
|
|
83
78
|
|
84
79
|
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
85
80
|
IRegistry.ObjectInfo memory productInfo;
|
86
|
-
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
81
|
+
(, productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
87
82
|
product = Product(productInfo.objectAddress);
|
88
83
|
}
|
89
|
-
// TODO no access restrictions
|
90
|
-
function calculatePremium(
|
91
|
-
RiskId riskId,
|
92
|
-
uint256 sumInsuredAmount,
|
93
|
-
uint256 lifetime,
|
94
|
-
bytes memory applicationData,
|
95
|
-
NftId bundleNftId,
|
96
|
-
ReferralId referralId
|
97
|
-
)
|
98
|
-
public
|
99
|
-
view
|
100
|
-
override
|
101
|
-
returns (
|
102
|
-
uint256 premiumAmount,
|
103
|
-
uint256 productFeeAmount,
|
104
|
-
uint256 poolFeeAmount,
|
105
|
-
uint256 bundleFeeAmount,
|
106
|
-
uint256 distributionFeeAmount
|
107
|
-
)
|
108
|
-
{
|
109
|
-
Product product = _getAndVerifyInstanceAndProduct();
|
110
|
-
uint256 netPremiumAmount = product.calculateNetPremium(
|
111
|
-
sumInsuredAmount,
|
112
|
-
riskId,
|
113
|
-
lifetime,
|
114
|
-
applicationData
|
115
|
-
);
|
116
|
-
|
117
|
-
(
|
118
|
-
productFeeAmount,
|
119
|
-
poolFeeAmount,
|
120
|
-
bundleFeeAmount,
|
121
|
-
distributionFeeAmount
|
122
|
-
) = _calculateFeeAmounts(
|
123
|
-
netPremiumAmount,
|
124
|
-
product,
|
125
|
-
bundleNftId,
|
126
|
-
referralId
|
127
|
-
);
|
128
|
-
|
129
|
-
premiumAmount = netPremiumAmount + productFeeAmount;
|
130
|
-
premiumAmount += poolFeeAmount + bundleFeeAmount;
|
131
|
-
premiumAmount += distributionFeeAmount;
|
132
|
-
}
|
133
|
-
|
134
|
-
function _calculateFeeAmounts(
|
135
|
-
uint256 netPremiumAmount,
|
136
|
-
Product product,
|
137
|
-
NftId bundleNftId,
|
138
|
-
ReferralId referralId
|
139
|
-
)
|
140
|
-
internal
|
141
|
-
view
|
142
|
-
returns (
|
143
|
-
uint256 productFeeAmount,
|
144
|
-
uint256 poolFeeAmount,
|
145
|
-
uint256 bundleFeeAmount,
|
146
|
-
uint256 distributionFeeAmount
|
147
|
-
)
|
148
|
-
{
|
149
|
-
InstanceReader instanceReader;
|
150
|
-
{
|
151
|
-
IInstance instance = product.getInstance();
|
152
|
-
instanceReader = instance.getInstanceReader();
|
153
|
-
}
|
154
|
-
|
155
|
-
NftId poolNftId = product.getPoolNftId();
|
156
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
157
|
-
require(bundleInfo.poolNftId == poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
|
158
|
-
|
159
|
-
{
|
160
|
-
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
|
161
|
-
(productFeeAmount,) = FeeLib.calculateFee(productSetupInfo.productFee, netPremiumAmount);
|
162
|
-
}
|
163
|
-
{
|
164
|
-
ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
165
|
-
(poolFeeAmount,) = FeeLib.calculateFee(poolSetupInfo.poolFee, netPremiumAmount);
|
166
|
-
}
|
167
|
-
{
|
168
|
-
NftId distributionNftId = product.getDistributionNftId();
|
169
|
-
ISetup.DistributionSetupInfo memory distributionSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
|
170
|
-
(distributionFeeAmount,) = FeeLib.calculateFee(distributionSetupInfo.distributionFee, netPremiumAmount);
|
171
|
-
}
|
172
|
-
|
173
|
-
(bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
|
174
|
-
}
|
175
84
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
lifetime,
|
205
|
-
applicationData,
|
206
|
-
bundleNftId,
|
207
|
-
referralId
|
208
|
-
);
|
209
|
-
|
210
|
-
IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
|
211
|
-
productInfo.nftId,
|
212
|
-
bundleNftId,
|
213
|
-
referralId,
|
214
|
-
riskId,
|
215
|
-
sumInsuredAmount,
|
216
|
-
premiumAmount,
|
217
|
-
0,
|
218
|
-
lifetime,
|
219
|
-
applicationData,
|
220
|
-
"",
|
221
|
-
0,
|
222
|
-
0,
|
223
|
-
0,
|
224
|
-
zeroTimestamp(),
|
225
|
-
zeroTimestamp(),
|
226
|
-
zeroTimestamp()
|
227
|
-
);
|
228
|
-
|
229
|
-
instance.createPolicy(policyNftId, policyInfo);
|
230
|
-
instance.updatePolicyState(policyNftId, APPLIED());
|
231
|
-
|
232
|
-
// TODO add logging
|
233
|
-
}
|
234
|
-
|
235
|
-
function _getAndVerifyUnderwritingSetup(
|
236
|
-
IInstance instance,
|
237
|
-
InstanceReader instanceReader,
|
238
|
-
IPolicy.PolicyInfo memory policyInfo,
|
239
|
-
ISetup.ProductSetupInfo memory productSetupInfo
|
240
|
-
)
|
241
|
-
internal
|
242
|
-
view
|
243
|
-
returns (
|
244
|
-
NftId bundleNftId,
|
245
|
-
IBundle.BundleInfo memory bundleInfo,
|
246
|
-
uint256 collateralAmount
|
247
|
-
)
|
248
|
-
{
|
249
|
-
// check match between policy and bundle (via pool)
|
250
|
-
bundleNftId = policyInfo.bundleNftId;
|
251
|
-
bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
252
|
-
require(bundleInfo.poolNftId == productSetupInfo.poolNftId, "POLICY_BUNDLE_MISMATCH");
|
253
|
-
|
254
|
-
// calculate required collateral
|
255
|
-
NftId poolNftId = productSetupInfo.poolNftId;
|
256
|
-
ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
257
|
-
|
258
|
-
// obtain remaining return values
|
259
|
-
collateralAmount = calculateRequiredCollateral(poolInfo.collateralizationLevel, policyInfo.sumInsuredAmount);
|
260
|
-
}
|
261
|
-
|
262
|
-
function _lockCollateralInBundle(
|
263
|
-
IInstance instance,
|
264
|
-
NftId bundleNftId,
|
265
|
-
IBundle.BundleInfo memory bundleInfo,
|
266
|
-
NftId policyNftId,
|
267
|
-
uint256 collateralAmount
|
268
|
-
)
|
269
|
-
internal
|
270
|
-
returns (IBundle.BundleInfo memory)
|
271
|
-
{
|
272
|
-
bundleInfo.lockedAmount += collateralAmount;
|
273
|
-
// TODO: track policy associated to bundle in bundlemanager (tbd) and how much is locked for it
|
274
|
-
return bundleInfo;
|
275
|
-
}
|
276
|
-
|
277
|
-
function _underwriteByPool(
|
278
|
-
NftId poolNftId,
|
279
|
-
NftId policyNftId,
|
280
|
-
IPolicy.PolicyInfo memory policyInfo,
|
281
|
-
bytes memory bundleFilter,
|
282
|
-
uint256 collateralAmount
|
283
|
-
)
|
284
|
-
internal
|
285
|
-
{
|
286
|
-
address poolAddress = getRegistry().getObjectInfo(poolNftId).objectAddress;
|
287
|
-
IPoolComponent pool = IPoolComponent(poolAddress);
|
288
|
-
pool.underwrite(
|
289
|
-
policyNftId,
|
290
|
-
policyInfo.applicationData,
|
291
|
-
bundleFilter,
|
292
|
-
collateralAmount);
|
293
|
-
}
|
294
|
-
|
295
|
-
|
296
|
-
function revoke(
|
85
|
+
// function _getAndVerifyUnderwritingSetup(
|
86
|
+
// IInstance instance,
|
87
|
+
// InstanceReader instanceReader,
|
88
|
+
// IPolicy.PolicyInfo memory policyInfo,
|
89
|
+
// ISetup.ProductSetupInfo memory productSetupInfo
|
90
|
+
// )
|
91
|
+
// internal
|
92
|
+
// view
|
93
|
+
// returns (
|
94
|
+
// NftId poolNftId,
|
95
|
+
// IComponents.PoolInfo memory poolInfo,
|
96
|
+
// NftId bundleNftId,
|
97
|
+
// IBundle.BundleInfo memory bundleInfo
|
98
|
+
// )
|
99
|
+
// {
|
100
|
+
// // check match between policy and bundle (via pool)
|
101
|
+
// poolNftId = productSetupInfo.poolNftId;
|
102
|
+
// bundleNftId = policyInfo.bundleNftId;
|
103
|
+
// bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
104
|
+
// require(bundleInfo.poolNftId == poolNftId, "BUNDLE_POOL_MISMATCH");
|
105
|
+
|
106
|
+
// // calculate required collateral
|
107
|
+
// IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
108
|
+
// poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
109
|
+
// }
|
110
|
+
|
111
|
+
|
112
|
+
function decline(
|
297
113
|
NftId policyNftId
|
298
114
|
)
|
299
115
|
external
|
300
116
|
override
|
301
117
|
{
|
302
|
-
require(false, "ERROR:PRS-
|
118
|
+
require(false, "ERROR:PRS-235:NOT_YET_IMPLEMENTED");
|
303
119
|
}
|
304
120
|
|
305
121
|
|
122
|
+
/// @dev underwites application which includes the locking of the required collateral from the pool.
|
306
123
|
function underwrite(
|
307
|
-
NftId policyNftId
|
124
|
+
NftId applicationNftId, // = policyNftId
|
308
125
|
bool requirePremiumPayment,
|
309
126
|
Timestamp activateAt
|
310
127
|
)
|
311
128
|
external
|
312
|
-
override
|
129
|
+
virtual override
|
313
130
|
{
|
314
131
|
// check caller is registered product
|
315
|
-
(
|
316
|
-
IRegistry.ObjectInfo memory productInfo,
|
317
|
-
IInstance instance
|
318
|
-
) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
132
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
319
133
|
InstanceReader instanceReader = instance.getInstanceReader();
|
320
134
|
|
321
|
-
// check
|
322
|
-
|
323
|
-
|
324
|
-
require(policyInfo.productNftId == productNftId, "POLICY_PRODUCT_MISMATCH");
|
325
|
-
require(instanceReader.getPolicyState(policyNftId) == APPLIED(), "ERROR:PRS-021:STATE_NOT_APPLIED");
|
135
|
+
// check policy matches with calling product
|
136
|
+
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
137
|
+
require(applicationInfo.productNftId == productNftId, "POLICY_PRODUCT_MISMATCH");
|
326
138
|
|
327
|
-
|
328
|
-
|
329
|
-
uint256 collateralAmount;
|
330
|
-
uint256 netPremiumAmount = 0; // > 0 if immediate premium payment
|
331
|
-
{
|
332
|
-
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
333
|
-
IBundle.BundleInfo memory bundleInfo;
|
334
|
-
|
335
|
-
(
|
336
|
-
bundleNftId,
|
337
|
-
bundleInfo,
|
338
|
-
collateralAmount
|
339
|
-
) = _getAndVerifyUnderwritingSetup(
|
340
|
-
instance,
|
341
|
-
instanceReader,
|
342
|
-
policyInfo,
|
343
|
-
productSetupInfo
|
344
|
-
);
|
345
|
-
}
|
139
|
+
// check policy is in state applied
|
140
|
+
require(instanceReader.getPolicyState(applicationNftId) == APPLIED(), "ERROR:PRS-021:STATE_NOT_APPLIED");
|
346
141
|
|
347
|
-
// lock bundle collateral
|
348
|
-
bundleInfo = _lockCollateralInBundle(
|
349
|
-
instance,
|
350
|
-
bundleNftId,
|
351
|
-
bundleInfo,
|
352
|
-
policyNftId,
|
353
|
-
collateralAmount);
|
354
142
|
StateId newPolicyState = UNDERWRITTEN();
|
355
|
-
|
143
|
+
|
356
144
|
// optional activation of policy
|
357
145
|
if(activateAt > zeroTimestamp()) {
|
358
146
|
newPolicyState = ACTIVE();
|
359
|
-
|
360
|
-
|
147
|
+
applicationInfo.activatedAt = activateAt;
|
148
|
+
applicationInfo.expiredAt = activateAt.addSeconds(applicationInfo.lifetime);
|
361
149
|
}
|
362
150
|
|
151
|
+
// lock bundle collateral
|
152
|
+
uint256 netPremiumAmount = 0; // > 0 if immediate premium payment
|
153
|
+
|
363
154
|
// optional collection of premium
|
364
155
|
if(requirePremiumPayment) {
|
365
156
|
netPremiumAmount = _processPremiumByTreasury(
|
366
157
|
instance,
|
367
|
-
|
368
|
-
|
369
|
-
policyInfo.premiumAmount);
|
158
|
+
applicationNftId,
|
159
|
+
applicationInfo.premiumAmount);
|
370
160
|
|
371
|
-
|
161
|
+
applicationInfo.premiumPaidAmount += applicationInfo.premiumAmount;
|
372
162
|
}
|
373
163
|
|
374
|
-
|
375
|
-
instance.updatePolicy(
|
376
|
-
|
377
|
-
// involve pool if necessary
|
378
|
-
{
|
379
|
-
ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(bundleInfo.poolNftId);
|
164
|
+
// store updated policy info
|
165
|
+
instance.updatePolicy(applicationNftId, applicationInfo, newPolicyState);
|
380
166
|
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
167
|
+
// lock collateral and update pool and bundle book keeping
|
168
|
+
// pool retention level: fraction of sum insured that product will cover from pool funds directly
|
169
|
+
// eg retention level 30%, payouts up to 30% of the sum insured will be made from the product's pool directly
|
170
|
+
// for the remaining 70% the pool owns a policy that will cover claims that exceed the 30% of the sum insured
|
171
|
+
// might also call pool component (for isVerifyingApplications pools)
|
172
|
+
_poolService.lockCollateral(
|
173
|
+
instance,
|
174
|
+
productNftId,
|
175
|
+
applicationNftId,
|
176
|
+
applicationInfo,
|
177
|
+
netPremiumAmount); // for pool book keeping (fee + additional capital)
|
391
178
|
|
392
|
-
// TODO add logging
|
179
|
+
// TODO: add logging
|
393
180
|
}
|
394
181
|
|
182
|
+
|
395
183
|
function calculateRequiredCollateral(UFixed collateralizationLevel, uint256 sumInsuredAmount) public pure override returns(uint256 collateralAmount) {
|
396
184
|
UFixed sumInsuredUFixed = UFixedLib.toUFixed(sumInsuredAmount);
|
397
185
|
UFixed collateralUFixed = collateralizationLevel * sumInsuredUFixed;
|
@@ -400,35 +188,36 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
400
188
|
|
401
189
|
function collectPremium(NftId policyNftId, Timestamp activateAt) external override {
|
402
190
|
// check caller is registered product
|
403
|
-
(
|
191
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
404
192
|
InstanceReader instanceReader = instance.getInstanceReader();
|
193
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
405
194
|
|
406
|
-
|
407
|
-
|
408
|
-
|
195
|
+
if (policyInfo.premiumPaidAmount == policyInfo.premiumAmount) {
|
196
|
+
revert ErrorIPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
|
197
|
+
}
|
409
198
|
|
410
|
-
|
411
|
-
// IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
412
|
-
|
413
|
-
// uint256 premiumAmount = policyInfo.premiumAmount;
|
414
|
-
// _processPremiumByTreasury(instance, productInfo.nftId, policyNftId, premiumAmount);
|
199
|
+
uint256 unpaidPremiumAmount = policyInfo.premiumAmount - policyInfo.premiumPaidAmount;
|
415
200
|
|
416
|
-
|
417
|
-
|
201
|
+
uint256 netPremiumAmount = _processPremiumByTreasury(
|
202
|
+
instance,
|
203
|
+
policyNftId,
|
204
|
+
unpaidPremiumAmount);
|
418
205
|
|
419
|
-
|
206
|
+
policyInfo.premiumPaidAmount += unpaidPremiumAmount;
|
420
207
|
|
421
|
-
|
422
|
-
|
423
|
-
// activate(policyNftId, activateAt);
|
424
|
-
// }
|
208
|
+
_bundleService.increaseBalance(instance, policyInfo.bundleNftId, netPremiumAmount);
|
209
|
+
instance.updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
425
210
|
|
426
|
-
|
211
|
+
if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
|
212
|
+
activate(policyNftId, activateAt);
|
213
|
+
}
|
214
|
+
|
215
|
+
// TODO: add logging
|
427
216
|
}
|
428
217
|
|
429
218
|
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
430
219
|
// check caller is registered product
|
431
|
-
(
|
220
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
432
221
|
InstanceReader instanceReader = instance.getInstanceReader();
|
433
222
|
|
434
223
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -442,14 +231,64 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
442
231
|
|
443
232
|
instance.updatePolicy(policyNftId, policyInfo, ACTIVE());
|
444
233
|
|
445
|
-
// TODO add logging
|
234
|
+
// TODO: add logging
|
235
|
+
}
|
236
|
+
|
237
|
+
|
238
|
+
function expire(
|
239
|
+
NftId policyNftId
|
240
|
+
)
|
241
|
+
external
|
242
|
+
override
|
243
|
+
// solhint-disable-next-line no-empty-blocks
|
244
|
+
{
|
245
|
+
|
446
246
|
}
|
447
247
|
|
448
248
|
function close(
|
449
249
|
NftId policyNftId
|
450
|
-
)
|
250
|
+
)
|
251
|
+
external
|
252
|
+
override
|
451
253
|
{
|
254
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
255
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
256
|
+
|
257
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
258
|
+
|
259
|
+
if (policyInfo.activatedAt.eqz()) {
|
260
|
+
revert ErrorIPolicyServicePolicyNotActivated(policyNftId);
|
261
|
+
}
|
262
|
+
|
263
|
+
StateId state = instanceReader.getPolicyState(policyNftId);
|
264
|
+
if (state != ACTIVE()) {
|
265
|
+
revert ErrorIPolicyServicePolicyNotActive(policyNftId, state);
|
266
|
+
}
|
267
|
+
|
268
|
+
if (policyInfo.closedAt.gtz()) {
|
269
|
+
revert ErrorIPolicyServicePolicyAlreadyClosed(policyNftId);
|
270
|
+
}
|
271
|
+
|
272
|
+
if (policyInfo.premiumAmount != policyInfo.premiumPaidAmount) {
|
273
|
+
revert ErrorIPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
|
274
|
+
}
|
275
|
+
|
276
|
+
if (policyInfo.openClaimsCount > 0) {
|
277
|
+
revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
278
|
+
}
|
279
|
+
|
280
|
+
if (TimestampLib.blockTimestamp().lte(policyInfo.expiredAt) && (policyInfo.payoutAmount < policyInfo.sumInsuredAmount)) {
|
281
|
+
revert ErrorIPolicyServicePolicyHasNotExpired(policyNftId, policyInfo.expiredAt);
|
282
|
+
}
|
283
|
+
|
284
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
452
285
|
|
286
|
+
_poolService.releaseCollateral(
|
287
|
+
instance,
|
288
|
+
policyNftId,
|
289
|
+
policyInfo);
|
290
|
+
|
291
|
+
instance.updatePolicy(policyNftId, policyInfo, CLOSED());
|
453
292
|
}
|
454
293
|
|
455
294
|
function _getPoolNftId(
|
@@ -468,7 +307,6 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
468
307
|
|
469
308
|
function _processPremiumByTreasury(
|
470
309
|
IInstance instance,
|
471
|
-
NftId productNftId,
|
472
310
|
NftId policyNftId,
|
473
311
|
uint256 premiumAmount
|
474
312
|
)
|
@@ -477,32 +315,48 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
477
315
|
{
|
478
316
|
// process token transfer(s)
|
479
317
|
if(premiumAmount > 0) {
|
318
|
+
NftId productNftId = getRegistry().getObjectInfo(policyNftId).parentNftId;
|
480
319
|
ISetup.ProductSetupInfo memory productSetupInfo = instance.getInstanceReader().getProductSetupInfo(productNftId);
|
320
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
481
321
|
TokenHandler tokenHandler = productSetupInfo.tokenHandler;
|
482
322
|
address policyOwner = getRegistry().ownerOf(policyNftId);
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
premiumAmount
|
323
|
+
address poolWallet = instance.getInstanceReader().getComponentInfo(productSetupInfo.poolNftId).wallet;
|
324
|
+
IPolicy.Premium memory premium = _applicationService.calculatePremium(
|
325
|
+
productNftId,
|
326
|
+
policyInfo.riskId,
|
327
|
+
policyInfo.sumInsuredAmount,
|
328
|
+
policyInfo.lifetime,
|
329
|
+
policyInfo.applicationData,
|
330
|
+
policyInfo.bundleNftId,
|
331
|
+
policyInfo.referralId
|
493
332
|
);
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
if (tokenHandler.getToken().allowance(policyOwner, address(tokenHandler)) < premiumAmount) {
|
498
|
-
revert ErrorIPolicyServiceInsufficientAllowance(policyOwner, address(tokenHandler), premiumAmount);
|
499
|
-
}
|
500
|
-
tokenHandler.transfer(policyOwner, productWallet, productFeeAmount);
|
501
|
-
tokenHandler.transfer(policyOwner, poolWallet, netAmount);
|
502
|
-
netPremiumAmount = netAmount;
|
333
|
+
|
334
|
+
if (premium.premiumAmount != premiumAmount) {
|
335
|
+
revert ErrorIPolicyServicePremiumMismatch(policyNftId, premiumAmount, premium.premiumAmount);
|
503
336
|
}
|
337
|
+
|
338
|
+
// move product fee to product wallet
|
339
|
+
address productWallet = productSetupInfo.wallet;
|
340
|
+
if (tokenHandler.getToken().allowance(policyOwner, address(tokenHandler)) < premium.premiumAmount) {
|
341
|
+
revert ErrorIPolicyServiceInsufficientAllowance(policyOwner, address(tokenHandler), premium.premiumAmount);
|
342
|
+
}
|
343
|
+
tokenHandler.transfer(policyOwner, productWallet, premium.productFeeFixAmount + premium.productFeeVarAmount);
|
344
|
+
|
345
|
+
// move distribution fee to distribution wallet
|
346
|
+
ISetup.DistributionSetupInfo memory distributionSetupInfo = instance.getInstanceReader().getDistributionSetupInfo(productSetupInfo.distributionNftId);
|
347
|
+
address distributionWallet = distributionSetupInfo.wallet;
|
348
|
+
uint256 distributionFeeAmountToTransfer = premium.distributionFeeFixAmount + premium.distributionFeeVarAmount - premium.discountAmount;
|
349
|
+
tokenHandler.transfer(policyOwner, distributionWallet, distributionFeeAmountToTransfer);
|
350
|
+
_distributionService.processSale(productSetupInfo.distributionNftId, policyInfo.referralId, premium, distributionFeeAmountToTransfer);
|
351
|
+
|
352
|
+
// move netpremium to pool wallet
|
353
|
+
tokenHandler.transfer(policyOwner, poolWallet, premium.netPremiumAmount);
|
354
|
+
|
355
|
+
// TODO: move pool related tokens too
|
356
|
+
// TODO: move bundle related tokens too
|
357
|
+
netPremiumAmount = premium.netPremiumAmount;
|
504
358
|
}
|
505
359
|
|
506
|
-
// TODO add logging
|
360
|
+
// TODO: add logging
|
507
361
|
}
|
508
362
|
}
|