@etherisc/gif-next 0.0.2-9d3eab3-323 → 0.0.2-9dc4419-573
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 +293 -156
- 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 +481 -368
- 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} +246 -160
- 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 +594 -286
- 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 +1359 -232
- 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 +256 -266
- 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} +204 -195
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +787 -143
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +192 -250
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +476 -131
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +73 -159
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +463 -342
- 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 +833 -301
- 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 +287 -202
- 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 +189 -6
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +104 -214
- 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 +202 -72
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +33 -23
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +214 -251
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +300 -81
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +125 -113
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +151 -50
- 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 +73 -159
- 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 +179 -151
- 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 +197 -201
- 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 +333 -137
- package/contracts/instance/InstanceServiceManager.sol +6 -10
- 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 +238 -67
- package/contracts/instance/service/BundleServiceManager.sol +6 -10
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +366 -45
- package/contracts/instance/service/DistributionServiceManager.sol +7 -11
- 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 +200 -341
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +222 -41
- package/contracts/instance/service/PoolServiceManager.sol +6 -10
- package/contracts/instance/service/ProductService.sol +92 -50
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +33 -9
- package/contracts/registry/IRegistryService.sol +23 -13
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +168 -86
- package/contracts/registry/RegistryAccessManager.sol +58 -52
- package/contracts/registry/RegistryService.sol +93 -141
- package/contracts/registry/RegistryServiceManager.sol +15 -13
- package/contracts/registry/ReleaseManager.sol +140 -194
- package/contracts/registry/TokenRegistry.sol +21 -15
- 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 +4 -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 +36 -22
- 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 +1 -1
- 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 +25 -19
- 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 -814
- 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 -315
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -2,51 +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 {
|
32
|
+
import {IService} from "../../shared/IService.sol";
|
33
|
+
import {Service} from "../../shared/Service.sol";
|
43
34
|
|
44
35
|
|
45
|
-
contract PolicyService is
|
36
|
+
contract PolicyService is
|
37
|
+
ComponentService,
|
38
|
+
IPolicyService
|
39
|
+
{
|
46
40
|
using NftIdLib for NftId;
|
41
|
+
using TimestampLib for Timestamp;
|
47
42
|
|
48
43
|
IPoolService internal _poolService;
|
49
44
|
IBundleService internal _bundleService;
|
45
|
+
IApplicationService internal _applicationService;
|
46
|
+
IDistributionService internal _distributionService;
|
50
47
|
|
51
48
|
event LogProductServiceSender(address sender);
|
52
49
|
|
@@ -55,338 +52,134 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
55
52
|
bytes memory data
|
56
53
|
)
|
57
54
|
internal
|
58
|
-
initializer
|
59
55
|
virtual override
|
56
|
+
initializer
|
60
57
|
{
|
61
58
|
address registryAddress;
|
62
59
|
address initialOwner;
|
63
60
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
64
61
|
|
65
|
-
|
62
|
+
initializeService(registryAddress, address(0), owner);
|
66
63
|
|
67
|
-
|
68
|
-
|
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));
|
69
69
|
|
70
|
-
|
70
|
+
registerInterface(type(IPolicyService).interfaceId);
|
71
71
|
}
|
72
72
|
|
73
73
|
|
74
|
-
function getDomain() public pure override
|
74
|
+
function getDomain() public pure override returns(ObjectType) {
|
75
75
|
return POLICY();
|
76
76
|
}
|
77
77
|
|
78
78
|
|
79
79
|
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
80
80
|
IRegistry.ObjectInfo memory productInfo;
|
81
|
-
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
81
|
+
(, productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
82
82
|
product = Product(productInfo.objectAddress);
|
83
83
|
}
|
84
|
-
// TODO no access restrictions
|
85
|
-
function calculatePremium(
|
86
|
-
RiskId riskId,
|
87
|
-
uint256 sumInsuredAmount,
|
88
|
-
uint256 lifetime,
|
89
|
-
bytes memory applicationData,
|
90
|
-
NftId bundleNftId,
|
91
|
-
ReferralId referralId
|
92
|
-
)
|
93
|
-
public
|
94
|
-
view
|
95
|
-
override
|
96
|
-
returns (
|
97
|
-
uint256 premiumAmount,
|
98
|
-
uint256 productFeeAmount,
|
99
|
-
uint256 poolFeeAmount,
|
100
|
-
uint256 bundleFeeAmount,
|
101
|
-
uint256 distributionFeeAmount
|
102
|
-
)
|
103
|
-
{
|
104
|
-
Product product = _getAndVerifyInstanceAndProduct();
|
105
|
-
uint256 netPremiumAmount = product.calculateNetPremium(
|
106
|
-
sumInsuredAmount,
|
107
|
-
riskId,
|
108
|
-
lifetime,
|
109
|
-
applicationData
|
110
|
-
);
|
111
|
-
|
112
|
-
(
|
113
|
-
productFeeAmount,
|
114
|
-
poolFeeAmount,
|
115
|
-
bundleFeeAmount,
|
116
|
-
distributionFeeAmount
|
117
|
-
) = _calculateFeeAmounts(
|
118
|
-
netPremiumAmount,
|
119
|
-
product,
|
120
|
-
bundleNftId,
|
121
|
-
referralId
|
122
|
-
);
|
123
|
-
|
124
|
-
premiumAmount = netPremiumAmount + productFeeAmount;
|
125
|
-
premiumAmount += poolFeeAmount + bundleFeeAmount;
|
126
|
-
premiumAmount += distributionFeeAmount;
|
127
|
-
}
|
128
|
-
|
129
|
-
function _calculateFeeAmounts(
|
130
|
-
uint256 netPremiumAmount,
|
131
|
-
Product product,
|
132
|
-
NftId bundleNftId,
|
133
|
-
ReferralId referralId
|
134
|
-
)
|
135
|
-
internal
|
136
|
-
view
|
137
|
-
returns (
|
138
|
-
uint256 productFeeAmount,
|
139
|
-
uint256 poolFeeAmount,
|
140
|
-
uint256 bundleFeeAmount,
|
141
|
-
uint256 distributionFeeAmount
|
142
|
-
)
|
143
|
-
{
|
144
|
-
InstanceReader instanceReader;
|
145
|
-
{
|
146
|
-
IInstance instance = product.getInstance();
|
147
|
-
instanceReader = instance.getInstanceReader();
|
148
|
-
}
|
149
|
-
|
150
|
-
NftId poolNftId = product.getPoolNftId();
|
151
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
152
|
-
require(bundleInfo.poolNftId == poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
|
153
|
-
|
154
|
-
{
|
155
|
-
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
|
156
|
-
(productFeeAmount,) = FeeLib.calculateFee(productSetupInfo.productFee, netPremiumAmount);
|
157
|
-
}
|
158
|
-
{
|
159
|
-
ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
160
|
-
(poolFeeAmount,) = FeeLib.calculateFee(poolSetupInfo.poolFee, netPremiumAmount);
|
161
|
-
}
|
162
|
-
{
|
163
|
-
NftId distributionNftId = product.getDistributionNftId();
|
164
|
-
ISetup.DistributionSetupInfo memory distributionSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
|
165
|
-
(distributionFeeAmount,) = FeeLib.calculateFee(distributionSetupInfo.distributionFee, netPremiumAmount);
|
166
|
-
}
|
167
|
-
|
168
|
-
(bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
|
169
|
-
}
|
170
|
-
|
171
84
|
|
172
|
-
function
|
173
|
-
|
174
|
-
|
175
|
-
|
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
|
-
applicationData,
|
201
|
-
bundleNftId,
|
202
|
-
referralId
|
203
|
-
);
|
204
|
-
|
205
|
-
IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
|
206
|
-
productInfo.nftId,
|
207
|
-
bundleNftId,
|
208
|
-
referralId,
|
209
|
-
riskId,
|
210
|
-
sumInsuredAmount,
|
211
|
-
premiumAmount,
|
212
|
-
0,
|
213
|
-
lifetime,
|
214
|
-
applicationData,
|
215
|
-
"",
|
216
|
-
0,
|
217
|
-
0,
|
218
|
-
0,
|
219
|
-
zeroTimestamp(),
|
220
|
-
zeroTimestamp(),
|
221
|
-
zeroTimestamp()
|
222
|
-
);
|
223
|
-
|
224
|
-
instance.createPolicy(policyNftId, policyInfo);
|
225
|
-
instance.updatePolicyState(policyNftId, APPLIED());
|
226
|
-
|
227
|
-
// TODO add logging
|
228
|
-
}
|
229
|
-
|
230
|
-
function _getAndVerifyUnderwritingSetup(
|
231
|
-
IInstance instance,
|
232
|
-
InstanceReader instanceReader,
|
233
|
-
IPolicy.PolicyInfo memory policyInfo,
|
234
|
-
ISetup.ProductSetupInfo memory productSetupInfo
|
235
|
-
)
|
236
|
-
internal
|
237
|
-
view
|
238
|
-
returns (
|
239
|
-
NftId bundleNftId,
|
240
|
-
IBundle.BundleInfo memory bundleInfo,
|
241
|
-
uint256 collateralAmount
|
242
|
-
)
|
243
|
-
{
|
244
|
-
// check match between policy and bundle (via pool)
|
245
|
-
bundleNftId = policyInfo.bundleNftId;
|
246
|
-
bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
247
|
-
require(bundleInfo.poolNftId == productSetupInfo.poolNftId, "POLICY_BUNDLE_MISMATCH");
|
248
|
-
|
249
|
-
// calculate required collateral
|
250
|
-
NftId poolNftId = productSetupInfo.poolNftId;
|
251
|
-
ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
252
|
-
|
253
|
-
// obtain remaining return values
|
254
|
-
collateralAmount = calculateRequiredCollateral(poolInfo.collateralizationLevel, policyInfo.sumInsuredAmount);
|
255
|
-
}
|
256
|
-
|
257
|
-
function _lockCollateralInBundle(
|
258
|
-
IInstance instance,
|
259
|
-
NftId bundleNftId,
|
260
|
-
IBundle.BundleInfo memory bundleInfo,
|
261
|
-
NftId policyNftId,
|
262
|
-
uint256 collateralAmount
|
263
|
-
)
|
264
|
-
internal
|
265
|
-
returns (IBundle.BundleInfo memory)
|
266
|
-
{
|
267
|
-
bundleInfo.lockedAmount += collateralAmount;
|
268
|
-
// TODO: track policy associated to bundle in bundlemanager (tbd) and how much is locked for it
|
269
|
-
return bundleInfo;
|
270
|
-
}
|
271
|
-
|
272
|
-
function _underwriteByPool(
|
273
|
-
NftId poolNftId,
|
274
|
-
NftId policyNftId,
|
275
|
-
IPolicy.PolicyInfo memory policyInfo,
|
276
|
-
bytes memory bundleFilter,
|
277
|
-
uint256 collateralAmount
|
278
|
-
)
|
279
|
-
internal
|
280
|
-
{
|
281
|
-
address poolAddress = getRegistry().getObjectInfo(poolNftId).objectAddress;
|
282
|
-
IPoolComponent pool = IPoolComponent(poolAddress);
|
283
|
-
pool.underwrite(
|
284
|
-
policyNftId,
|
285
|
-
policyInfo.applicationData,
|
286
|
-
bundleFilter,
|
287
|
-
collateralAmount);
|
288
|
-
}
|
289
|
-
|
290
|
-
|
291
|
-
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(
|
292
113
|
NftId policyNftId
|
293
114
|
)
|
294
115
|
external
|
295
116
|
override
|
296
117
|
{
|
297
|
-
require(false, "ERROR:PRS-
|
118
|
+
require(false, "ERROR:PRS-235:NOT_YET_IMPLEMENTED");
|
298
119
|
}
|
299
120
|
|
300
121
|
|
122
|
+
/// @dev underwites application which includes the locking of the required collateral from the pool.
|
301
123
|
function underwrite(
|
302
|
-
NftId policyNftId
|
124
|
+
NftId applicationNftId, // = policyNftId
|
303
125
|
bool requirePremiumPayment,
|
304
126
|
Timestamp activateAt
|
305
127
|
)
|
306
128
|
external
|
307
|
-
override
|
129
|
+
virtual override
|
308
130
|
{
|
309
131
|
// check caller is registered product
|
310
|
-
(
|
311
|
-
IRegistry.ObjectInfo memory productInfo,
|
312
|
-
IInstance instance
|
313
|
-
) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
132
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
314
133
|
InstanceReader instanceReader = instance.getInstanceReader();
|
315
134
|
|
316
|
-
// check
|
317
|
-
|
318
|
-
|
319
|
-
require(policyInfo.productNftId == productNftId, "POLICY_PRODUCT_MISMATCH");
|
320
|
-
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");
|
321
138
|
|
322
|
-
|
323
|
-
|
324
|
-
uint256 collateralAmount;
|
325
|
-
uint256 netPremiumAmount = 0; // > 0 if immediate premium payment
|
326
|
-
{
|
327
|
-
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
328
|
-
IBundle.BundleInfo memory bundleInfo;
|
329
|
-
|
330
|
-
(
|
331
|
-
bundleNftId,
|
332
|
-
bundleInfo,
|
333
|
-
collateralAmount
|
334
|
-
) = _getAndVerifyUnderwritingSetup(
|
335
|
-
instance,
|
336
|
-
instanceReader,
|
337
|
-
policyInfo,
|
338
|
-
productSetupInfo
|
339
|
-
);
|
340
|
-
}
|
139
|
+
// check policy is in state applied
|
140
|
+
require(instanceReader.getPolicyState(applicationNftId) == APPLIED(), "ERROR:PRS-021:STATE_NOT_APPLIED");
|
341
141
|
|
342
|
-
// lock bundle collateral
|
343
|
-
bundleInfo = _lockCollateralInBundle(
|
344
|
-
instance,
|
345
|
-
bundleNftId,
|
346
|
-
bundleInfo,
|
347
|
-
policyNftId,
|
348
|
-
collateralAmount);
|
349
142
|
StateId newPolicyState = UNDERWRITTEN();
|
350
|
-
|
143
|
+
|
351
144
|
// optional activation of policy
|
352
145
|
if(activateAt > zeroTimestamp()) {
|
353
146
|
newPolicyState = ACTIVE();
|
354
|
-
|
355
|
-
|
147
|
+
applicationInfo.activatedAt = activateAt;
|
148
|
+
applicationInfo.expiredAt = activateAt.addSeconds(applicationInfo.lifetime);
|
356
149
|
}
|
357
150
|
|
151
|
+
// lock bundle collateral
|
152
|
+
uint256 netPremiumAmount = 0; // > 0 if immediate premium payment
|
153
|
+
|
358
154
|
// optional collection of premium
|
359
155
|
if(requirePremiumPayment) {
|
360
156
|
netPremiumAmount = _processPremiumByTreasury(
|
361
157
|
instance,
|
362
|
-
|
363
|
-
|
364
|
-
policyInfo.premiumAmount);
|
158
|
+
applicationNftId,
|
159
|
+
applicationInfo.premiumAmount);
|
365
160
|
|
366
|
-
|
161
|
+
applicationInfo.premiumPaidAmount += applicationInfo.premiumAmount;
|
367
162
|
}
|
368
163
|
|
369
|
-
|
370
|
-
instance.updatePolicy(
|
371
|
-
|
372
|
-
// involve pool if necessary
|
373
|
-
{
|
374
|
-
ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(bundleInfo.poolNftId);
|
164
|
+
// store updated policy info
|
165
|
+
instance.updatePolicy(applicationNftId, applicationInfo, newPolicyState);
|
375
166
|
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
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)
|
386
178
|
|
387
|
-
// TODO add logging
|
179
|
+
// TODO: add logging
|
388
180
|
}
|
389
181
|
|
182
|
+
|
390
183
|
function calculateRequiredCollateral(UFixed collateralizationLevel, uint256 sumInsuredAmount) public pure override returns(uint256 collateralAmount) {
|
391
184
|
UFixed sumInsuredUFixed = UFixedLib.toUFixed(sumInsuredAmount);
|
392
185
|
UFixed collateralUFixed = collateralizationLevel * sumInsuredUFixed;
|
@@ -395,35 +188,36 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
395
188
|
|
396
189
|
function collectPremium(NftId policyNftId, Timestamp activateAt) external override {
|
397
190
|
// check caller is registered product
|
398
|
-
(
|
191
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
399
192
|
InstanceReader instanceReader = instance.getInstanceReader();
|
193
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
400
194
|
|
401
|
-
|
402
|
-
|
403
|
-
|
195
|
+
if (policyInfo.premiumPaidAmount == policyInfo.premiumAmount) {
|
196
|
+
revert ErrorIPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
|
197
|
+
}
|
404
198
|
|
405
|
-
|
406
|
-
// IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
407
|
-
|
408
|
-
// uint256 premiumAmount = policyInfo.premiumAmount;
|
409
|
-
// _processPremiumByTreasury(instance, productInfo.nftId, policyNftId, premiumAmount);
|
199
|
+
uint256 unpaidPremiumAmount = policyInfo.premiumAmount - policyInfo.premiumPaidAmount;
|
410
200
|
|
411
|
-
|
412
|
-
|
201
|
+
uint256 netPremiumAmount = _processPremiumByTreasury(
|
202
|
+
instance,
|
203
|
+
policyNftId,
|
204
|
+
unpaidPremiumAmount);
|
413
205
|
|
414
|
-
|
206
|
+
policyInfo.premiumPaidAmount += unpaidPremiumAmount;
|
415
207
|
|
416
|
-
|
417
|
-
|
418
|
-
// activate(policyNftId, activateAt);
|
419
|
-
// }
|
208
|
+
_bundleService.increaseBalance(instance, policyInfo.bundleNftId, netPremiumAmount);
|
209
|
+
instance.updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
420
210
|
|
421
|
-
|
211
|
+
if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
|
212
|
+
activate(policyNftId, activateAt);
|
213
|
+
}
|
214
|
+
|
215
|
+
// TODO: add logging
|
422
216
|
}
|
423
217
|
|
424
218
|
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
425
219
|
// check caller is registered product
|
426
|
-
(
|
220
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
427
221
|
InstanceReader instanceReader = instance.getInstanceReader();
|
428
222
|
|
429
223
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -437,14 +231,64 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
437
231
|
|
438
232
|
instance.updatePolicy(policyNftId, policyInfo, ACTIVE());
|
439
233
|
|
440
|
-
// 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
|
+
|
441
246
|
}
|
442
247
|
|
443
248
|
function close(
|
444
249
|
NftId policyNftId
|
445
|
-
)
|
250
|
+
)
|
251
|
+
external
|
252
|
+
override
|
446
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();
|
447
285
|
|
286
|
+
_poolService.releaseCollateral(
|
287
|
+
instance,
|
288
|
+
policyNftId,
|
289
|
+
policyInfo);
|
290
|
+
|
291
|
+
instance.updatePolicy(policyNftId, policyInfo, CLOSED());
|
448
292
|
}
|
449
293
|
|
450
294
|
function _getPoolNftId(
|
@@ -463,7 +307,6 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
463
307
|
|
464
308
|
function _processPremiumByTreasury(
|
465
309
|
IInstance instance,
|
466
|
-
NftId productNftId,
|
467
310
|
NftId policyNftId,
|
468
311
|
uint256 premiumAmount
|
469
312
|
)
|
@@ -472,32 +315,48 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
472
315
|
{
|
473
316
|
// process token transfer(s)
|
474
317
|
if(premiumAmount > 0) {
|
318
|
+
NftId productNftId = getRegistry().getObjectInfo(policyNftId).parentNftId;
|
475
319
|
ISetup.ProductSetupInfo memory productSetupInfo = instance.getInstanceReader().getProductSetupInfo(productNftId);
|
320
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
476
321
|
TokenHandler tokenHandler = productSetupInfo.tokenHandler;
|
477
322
|
address policyOwner = getRegistry().ownerOf(policyNftId);
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
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
|
488
332
|
);
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
if (tokenHandler.getToken().allowance(policyOwner, address(tokenHandler)) < premiumAmount) {
|
493
|
-
revert ErrorIPolicyServiceInsufficientAllowance(policyOwner, address(tokenHandler), premiumAmount);
|
494
|
-
}
|
495
|
-
tokenHandler.transfer(policyOwner, productWallet, productFeeAmount);
|
496
|
-
tokenHandler.transfer(policyOwner, poolWallet, netAmount);
|
497
|
-
netPremiumAmount = netAmount;
|
333
|
+
|
334
|
+
if (premium.premiumAmount != premiumAmount) {
|
335
|
+
revert ErrorIPolicyServicePremiumMismatch(policyNftId, premiumAmount, premium.premiumAmount);
|
498
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;
|
499
358
|
}
|
500
359
|
|
501
|
-
// TODO add logging
|
360
|
+
// TODO: add logging
|
502
361
|
}
|
503
362
|
}
|