@etherisc/gif-next 0.0.2-b244df3-779 → 0.0.2-b38343e-249
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 +73 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +853 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +887 -242
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +160 -100
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +791 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +655 -43
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +654 -5
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +600 -217
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +543 -152
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +38 -62
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +881 -121
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +168 -166
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +791 -438
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +118 -173
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +61 -97
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +390 -362
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +299 -130
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -32
- 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} +188 -168
- 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 +2 -2
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +24 -13
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +408 -246
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +302 -81
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +443 -192
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +322 -73
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +200 -204
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +170 -217
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → instance/service/IClaimService.sol/IClaimService.json} +154 -124
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +197 -163
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +138 -230
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +23 -186
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +29 -192
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +392 -267
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +339 -86
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +216 -218
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +299 -78
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +217 -219
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +305 -76
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +225 -133
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +149 -217
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +238 -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 +195 -322
- 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 +547 -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/shared/IRegistryLinked.sol/IRegistryLinked.json +48 -0
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +23 -186
- 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 +119 -173
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- 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/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 +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +140 -230
- 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/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/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- 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/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 +2 -2
- 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 +2 -2
- 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/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/Component.sol +242 -0
- package/contracts/components/Distribution.sol +209 -64
- package/contracts/components/IComponent.sol +55 -0
- package/contracts/components/IDistributionComponent.sol +59 -3
- package/contracts/components/IPoolComponent.sol +50 -29
- package/contracts/components/IProductComponent.sol +7 -3
- package/contracts/components/Pool.sol +135 -152
- package/contracts/components/Product.sol +114 -121
- package/contracts/instance/BundleManager.sol +7 -11
- package/contracts/instance/IInstance.sol +42 -10
- package/contracts/instance/IInstanceService.sol +27 -2
- package/contracts/instance/Instance.sol +84 -69
- package/contracts/instance/InstanceAccessManager.sol +36 -41
- package/contracts/instance/InstanceReader.sol +3 -25
- package/contracts/instance/InstanceService.sol +271 -79
- package/contracts/instance/InstanceServiceManager.sol +6 -9
- package/contracts/instance/ObjectManager.sol +7 -24
- package/contracts/instance/base/ComponentService.sol +134 -0
- package/contracts/instance/module/IAccess.sol +4 -5
- package/contracts/instance/module/IPolicy.sol +4 -2
- package/contracts/instance/module/ISetup.sol +5 -4
- package/contracts/instance/service/ApplicationService.sol +268 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +52 -14
- 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 +208 -49
- package/contracts/instance/service/DistributionServiceManager.sol +7 -10
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +12 -3
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +53 -0
- package/contracts/instance/service/IPolicyService.sol +48 -46
- package/contracts/instance/service/PolicyService.sol +156 -190
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +27 -42
- package/contracts/instance/service/PoolServiceManager.sol +6 -9
- package/contracts/instance/service/ProductService.sol +100 -40
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +1 -1
- package/contracts/registry/IRegistry.sol +37 -19
- package/contracts/registry/IRegistryService.sol +30 -13
- package/contracts/registry/Registry.sol +233 -217
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +96 -171
- package/contracts/registry/RegistryServiceManager.sol +21 -39
- package/contracts/registry/ReleaseManager.sol +322 -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 +2 -1
- 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 +14 -30
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +25 -22
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +4 -3
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/ObjectType.sol +9 -5
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/RoleId.sol +6 -8
- 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/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- 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/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
- 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
@@ -4,7 +4,6 @@ pragma solidity ^0.8.19;
|
|
4
4
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
5
|
import {IProductComponent} from "../../components/IProductComponent.sol";
|
6
6
|
import {Product} from "../../components/Product.sol";
|
7
|
-
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
8
7
|
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
9
8
|
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
10
9
|
import {IInstance} from "../IInstance.sol";
|
@@ -20,11 +19,11 @@ import {TokenHandler} from "../../shared/TokenHandler.sol";
|
|
20
19
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
21
20
|
import {Versionable} from "../../shared/Versionable.sol";
|
22
21
|
|
23
|
-
import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
22
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
24
23
|
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
25
24
|
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
26
|
-
import {ObjectType, INSTANCE, PRODUCT, POLICY} from "../../types/ObjectType.sol";
|
27
|
-
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
|
25
|
+
import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, BUNDLE} from "../../types/ObjectType.sol";
|
26
|
+
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
|
28
27
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
29
28
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
30
29
|
import {ReferralId} from "../../types/Referral.sol";
|
@@ -35,20 +34,19 @@ import {Version, VersionLib} from "../../types/Version.sol";
|
|
35
34
|
|
36
35
|
import {IService} from "../../shared/IService.sol";
|
37
36
|
import {Service} from "../../shared/Service.sol";
|
38
|
-
import {
|
37
|
+
import {ComponentService} from "../base/ComponentService.sol";
|
39
38
|
import {IPolicyService} from "./IPolicyService.sol";
|
40
39
|
import {InstanceReader} from "../InstanceReader.sol";
|
41
40
|
import {IPoolService} from "./IPoolService.sol";
|
42
41
|
import {IBundleService} from "./IBundleService.sol";
|
43
|
-
import {POOL_SERVICE_NAME} from "./PoolService.sol";
|
44
|
-
import {BUNDLE_SERVICE_NAME} from "./BundleService.sol";
|
45
42
|
|
46
|
-
string constant POLICY_SERVICE_NAME = "PolicyService";
|
47
43
|
|
48
|
-
contract PolicyService is
|
44
|
+
contract PolicyService is
|
45
|
+
ComponentService,
|
46
|
+
IPolicyService
|
47
|
+
{
|
49
48
|
using NftIdLib for NftId;
|
50
|
-
|
51
|
-
string public constant NAME = "PolicyService";
|
49
|
+
using TimestampLib for Timestamp;
|
52
50
|
|
53
51
|
IPoolService internal _poolService;
|
54
52
|
IBundleService internal _bundleService;
|
@@ -60,24 +58,24 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
60
58
|
bytes memory data
|
61
59
|
)
|
62
60
|
internal
|
63
|
-
initializer
|
64
61
|
virtual override
|
62
|
+
initializer
|
65
63
|
{
|
66
64
|
address registryAddress;
|
67
65
|
address initialOwner;
|
68
66
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
69
67
|
|
70
|
-
|
68
|
+
initializeService(registryAddress, owner);
|
71
69
|
|
72
|
-
_poolService = IPoolService(
|
73
|
-
_bundleService = IBundleService(
|
70
|
+
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getMajorVersion()));
|
71
|
+
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), getMajorVersion()));
|
74
72
|
|
75
|
-
|
73
|
+
registerInterface(type(IPolicyService).interfaceId);
|
76
74
|
}
|
77
75
|
|
78
76
|
|
79
|
-
function
|
80
|
-
return
|
77
|
+
function getDomain() public pure override(IService, Service) returns(ObjectType) {
|
78
|
+
return POLICY();
|
81
79
|
}
|
82
80
|
|
83
81
|
|
@@ -86,7 +84,8 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
86
84
|
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
87
85
|
product = Product(productInfo.objectAddress);
|
88
86
|
}
|
89
|
-
|
87
|
+
|
88
|
+
// TODO: no access restrictions
|
90
89
|
function calculatePremium(
|
91
90
|
RiskId riskId,
|
92
91
|
uint256 sumInsuredAmount,
|
@@ -97,7 +96,7 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
97
96
|
)
|
98
97
|
public
|
99
98
|
view
|
100
|
-
override
|
99
|
+
virtual override
|
101
100
|
returns (
|
102
101
|
uint256 premiumAmount,
|
103
102
|
uint256 productFeeAmount,
|
@@ -173,65 +172,6 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
173
172
|
(bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
|
174
173
|
}
|
175
174
|
|
176
|
-
|
177
|
-
function createApplication(
|
178
|
-
address applicationOwner,
|
179
|
-
RiskId riskId,
|
180
|
-
uint256 sumInsuredAmount,
|
181
|
-
uint256 lifetime,
|
182
|
-
bytes memory applicationData,
|
183
|
-
NftId bundleNftId,
|
184
|
-
ReferralId referralId
|
185
|
-
) external override returns (NftId policyNftId) {
|
186
|
-
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
187
|
-
// TODO add validations (see create bundle in pool service)
|
188
|
-
|
189
|
-
policyNftId = getRegistryService().registerPolicy(
|
190
|
-
IRegistry.ObjectInfo(
|
191
|
-
zeroNftId(),
|
192
|
-
productInfo.nftId,
|
193
|
-
POLICY(),
|
194
|
-
false, // intercepting property for policies is defined on product
|
195
|
-
address(0),
|
196
|
-
applicationOwner,
|
197
|
-
""
|
198
|
-
)
|
199
|
-
);
|
200
|
-
|
201
|
-
(uint256 premiumAmount,,,,) = calculatePremium(
|
202
|
-
riskId,
|
203
|
-
sumInsuredAmount,
|
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
175
|
function _getAndVerifyUnderwritingSetup(
|
236
176
|
IInstance instance,
|
237
177
|
InstanceReader instanceReader,
|
@@ -241,118 +181,78 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
241
181
|
internal
|
242
182
|
view
|
243
183
|
returns (
|
184
|
+
NftId poolNftId,
|
244
185
|
NftId bundleNftId,
|
245
186
|
IBundle.BundleInfo memory bundleInfo,
|
246
187
|
uint256 collateralAmount
|
247
188
|
)
|
248
189
|
{
|
249
190
|
// check match between policy and bundle (via pool)
|
191
|
+
poolNftId = productSetupInfo.poolNftId;
|
250
192
|
bundleNftId = policyInfo.bundleNftId;
|
251
193
|
bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
252
|
-
require(bundleInfo.poolNftId ==
|
194
|
+
require(bundleInfo.poolNftId == poolNftId, "POLICY_BUNDLE_MISMATCH");
|
253
195
|
|
254
196
|
// calculate required collateral
|
255
|
-
NftId poolNftId = productSetupInfo.poolNftId;
|
256
197
|
ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
257
198
|
|
258
199
|
// obtain remaining return values
|
200
|
+
// TODO required collateral amount should be calculated by pool service, not policy service
|
259
201
|
collateralAmount = calculateRequiredCollateral(poolInfo.collateralizationLevel, policyInfo.sumInsuredAmount);
|
260
202
|
}
|
261
203
|
|
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
204
|
|
296
|
-
function
|
205
|
+
function decline(
|
297
206
|
NftId policyNftId
|
298
207
|
)
|
299
208
|
external
|
300
209
|
override
|
301
210
|
{
|
302
|
-
require(false, "ERROR:PRS-
|
211
|
+
require(false, "ERROR:PRS-235:NOT_YET_IMPLEMENTED");
|
303
212
|
}
|
304
213
|
|
305
214
|
|
215
|
+
/// @dev underwites application which includes the locking of the required collateral from the pool.
|
306
216
|
function underwrite(
|
307
|
-
NftId policyNftId
|
217
|
+
NftId applicationNftId, // = policyNftId
|
308
218
|
bool requirePremiumPayment,
|
309
219
|
Timestamp activateAt
|
310
220
|
)
|
311
221
|
external
|
312
|
-
override
|
222
|
+
virtual override
|
313
223
|
{
|
314
224
|
// check caller is registered product
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
225
|
+
IInstance instance;
|
226
|
+
InstanceReader instanceReader;
|
227
|
+
NftId productNftId;
|
228
|
+
{
|
229
|
+
IRegistry.ObjectInfo memory productInfo;
|
230
|
+
(productInfo, instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
231
|
+
instanceReader = instance.getInstanceReader();
|
232
|
+
productNftId = productInfo.nftId;
|
233
|
+
}
|
320
234
|
|
321
|
-
// check
|
322
|
-
|
323
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
235
|
+
// check policy matches with calling product
|
236
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(applicationNftId);
|
324
237
|
require(policyInfo.productNftId == productNftId, "POLICY_PRODUCT_MISMATCH");
|
325
|
-
require(instanceReader.getPolicyState(policyNftId) == APPLIED(), "ERROR:PRS-021:STATE_NOT_APPLIED");
|
326
238
|
|
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
|
-
}
|
239
|
+
// check policy is in state applied
|
240
|
+
require(instanceReader.getPolicyState(applicationNftId) == APPLIED(), "ERROR:PRS-021:STATE_NOT_APPLIED");
|
346
241
|
|
347
|
-
|
348
|
-
|
242
|
+
(
|
243
|
+
NftId poolNftId,
|
244
|
+
NftId bundleNftId,
|
245
|
+
IBundle.BundleInfo memory bundleInfo,
|
246
|
+
uint256 collateralAmount
|
247
|
+
) = _getAndVerifyUnderwritingSetup(
|
349
248
|
instance,
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
StateId newPolicyState = UNDERWRITTEN();
|
249
|
+
instanceReader,
|
250
|
+
policyInfo,
|
251
|
+
instanceReader.getProductSetupInfo(productNftId)
|
252
|
+
);
|
355
253
|
|
254
|
+
StateId newPolicyState = UNDERWRITTEN();
|
255
|
+
|
356
256
|
// optional activation of policy
|
357
257
|
if(activateAt > zeroTimestamp()) {
|
358
258
|
newPolicyState = ACTIVE();
|
@@ -360,38 +260,56 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
360
260
|
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
361
261
|
}
|
362
262
|
|
263
|
+
// lock bundle collateral
|
264
|
+
uint256 netPremiumAmount = 0; // > 0 if immediate premium payment
|
265
|
+
|
363
266
|
// optional collection of premium
|
364
267
|
if(requirePremiumPayment) {
|
365
268
|
netPremiumAmount = _processPremiumByTreasury(
|
366
269
|
instance,
|
367
|
-
|
368
|
-
|
270
|
+
productNftId,
|
271
|
+
applicationNftId,
|
369
272
|
policyInfo.premiumAmount);
|
370
273
|
|
371
274
|
policyInfo.premiumPaidAmount += policyInfo.premiumAmount;
|
372
275
|
}
|
373
276
|
|
374
|
-
|
375
|
-
|
277
|
+
// lock collateral and update bundle book keeping
|
278
|
+
// TODO introduct indirection via pool service?
|
279
|
+
// well pool would only need to be involved when a part of the collateral
|
280
|
+
// is provided by a "re insurance policy" of the pool
|
281
|
+
// but then again the policiy would likely best be attached to the bundle. really? why?
|
282
|
+
// retention level: fraction of sum insured that product will cover from pool funds directly
|
283
|
+
// eg retention level 30%, payouts up to 30% of the sum insured will be made from the product's pool directly
|
284
|
+
// for the remaining 70% the pool owns a policy that will cover claims that exceed the 30% of the sum insured
|
285
|
+
// open points:
|
286
|
+
// - do we need a link of a bundle to this policy or is it enough to know that the pool has an active policy?
|
287
|
+
// - when to buy such policies and for which amount? manual trigger or link to bundle creation and/or funding?
|
288
|
+
bundleInfo = _bundleService.lockCollateral(
|
289
|
+
instance,
|
290
|
+
applicationNftId,
|
291
|
+
bundleNftId,
|
292
|
+
collateralAmount,
|
293
|
+
netPremiumAmount);
|
376
294
|
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
);
|
389
|
-
}
|
295
|
+
instance.updatePolicy(applicationNftId, policyInfo, newPolicyState);
|
296
|
+
|
297
|
+
// also verify/confirm application by pool if necessary
|
298
|
+
if(instanceReader.getPoolSetupInfo(poolNftId).isVerifyingApplications) {
|
299
|
+
IPoolComponent pool = IPoolComponent(
|
300
|
+
getRegistry().getObjectInfo(poolNftId).objectAddress);
|
301
|
+
|
302
|
+
pool.verifyApplication(
|
303
|
+
applicationNftId,
|
304
|
+
policyInfo.applicationData,
|
305
|
+
bundleInfo.filter,
|
306
|
+
collateralAmount);
|
390
307
|
}
|
391
308
|
|
392
|
-
// TODO add logging
|
309
|
+
// TODO: add logging
|
393
310
|
}
|
394
311
|
|
312
|
+
|
395
313
|
function calculateRequiredCollateral(UFixed collateralizationLevel, uint256 sumInsuredAmount) public pure override returns(uint256 collateralAmount) {
|
396
314
|
UFixed sumInsuredUFixed = UFixedLib.toUFixed(sumInsuredAmount);
|
397
315
|
UFixed collateralUFixed = collateralizationLevel * sumInsuredUFixed;
|
@@ -402,28 +320,30 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
402
320
|
// check caller is registered product
|
403
321
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
404
322
|
InstanceReader instanceReader = instance.getInstanceReader();
|
323
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
324
|
+
|
325
|
+
if (policyInfo.premiumPaidAmount == policyInfo.premiumAmount) {
|
326
|
+
revert ErrorIPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
|
327
|
+
}
|
405
328
|
|
406
|
-
|
407
|
-
// TODO: transfer premium
|
408
|
-
// TODO: optionally activate
|
329
|
+
uint256 unpaidPremiumAmount = policyInfo.premiumAmount - policyInfo.premiumPaidAmount;
|
409
330
|
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
331
|
+
uint256 netPremiumAmount = _processPremiumByTreasury(
|
332
|
+
instance,
|
333
|
+
productInfo.nftId,
|
334
|
+
policyNftId,
|
335
|
+
unpaidPremiumAmount);
|
415
336
|
|
416
|
-
|
417
|
-
// policyInfo.premiumPaidAmount += premiumAmount;
|
337
|
+
policyInfo.premiumPaidAmount += unpaidPremiumAmount;
|
418
338
|
|
419
|
-
|
339
|
+
_bundleService.increaseBalance(instance, policyInfo.bundleNftId, netPremiumAmount);
|
340
|
+
instance.updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
420
341
|
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
// }
|
342
|
+
if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
|
343
|
+
activate(policyNftId, activateAt);
|
344
|
+
}
|
425
345
|
|
426
|
-
// TODO add logging
|
346
|
+
// TODO: add logging
|
427
347
|
}
|
428
348
|
|
429
349
|
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
@@ -442,14 +362,60 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
442
362
|
|
443
363
|
instance.updatePolicy(policyNftId, policyInfo, ACTIVE());
|
444
364
|
|
445
|
-
// TODO add logging
|
365
|
+
// TODO: add logging
|
366
|
+
}
|
367
|
+
|
368
|
+
|
369
|
+
function expire(
|
370
|
+
NftId policyNftId
|
371
|
+
)
|
372
|
+
external
|
373
|
+
override
|
374
|
+
// solhint-disable-next-line no-empty-blocks
|
375
|
+
{
|
376
|
+
|
446
377
|
}
|
447
378
|
|
448
379
|
function close(
|
449
380
|
NftId policyNftId
|
450
|
-
)
|
381
|
+
)
|
382
|
+
external
|
383
|
+
override
|
451
384
|
{
|
385
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
386
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
387
|
+
|
388
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
389
|
+
|
390
|
+
if (policyInfo.activatedAt.eqz()) {
|
391
|
+
revert ErrorIPolicyServicePolicyNotActivated(policyNftId);
|
392
|
+
}
|
393
|
+
|
394
|
+
StateId state = instanceReader.getPolicyState(policyNftId);
|
395
|
+
if (state != ACTIVE()) {
|
396
|
+
revert ErrorIPolicyServicePolicyNotActive(policyNftId, state);
|
397
|
+
}
|
398
|
+
|
399
|
+
if (policyInfo.closedAt.gtz()) {
|
400
|
+
revert ErrorIPolicyServicePolicyAlreadyClosed(policyNftId);
|
401
|
+
}
|
402
|
+
|
403
|
+
if (policyInfo.premiumAmount != policyInfo.premiumPaidAmount) {
|
404
|
+
revert ErrorIPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
|
405
|
+
}
|
406
|
+
|
407
|
+
if (policyInfo.openClaimsCount > 0) {
|
408
|
+
revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
409
|
+
}
|
410
|
+
|
411
|
+
if (TimestampLib.blockTimestamp().lte(policyInfo.expiredAt) && (policyInfo.payoutAmount < policyInfo.sumInsuredAmount)) {
|
412
|
+
revert ErrorIPolicyServicePolicyHasNotExpired(policyNftId, policyInfo.expiredAt);
|
413
|
+
}
|
414
|
+
|
415
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
452
416
|
|
417
|
+
_bundleService.closePolicy(instance, policyNftId, policyInfo.bundleNftId, policyInfo.sumInsuredAmount);
|
418
|
+
instance.updatePolicy(policyNftId, policyInfo, CLOSED());
|
453
419
|
}
|
454
420
|
|
455
421
|
function _getPoolNftId(
|
@@ -503,6 +469,6 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
503
469
|
}
|
504
470
|
}
|
505
471
|
|
506
|
-
// TODO add logging
|
472
|
+
// TODO: add logging
|
507
473
|
}
|
508
474
|
}
|
@@ -16,7 +16,7 @@ contract PolicyServiceManager is ProxyManager {
|
|
16
16
|
constructor(
|
17
17
|
address registryAddress
|
18
18
|
)
|
19
|
-
ProxyManager()
|
19
|
+
ProxyManager(registryAddress)
|
20
20
|
{
|
21
21
|
PolicyService svc = new PolicyService();
|
22
22
|
bytes memory data = abi.encode(registryAddress, address(this));
|
@@ -39,7 +39,7 @@ contract PolicyServiceManager is ProxyManager {
|
|
39
39
|
// address(_productService));
|
40
40
|
|
41
41
|
// implies that after this constructor call only upgrade functionality is available
|
42
|
-
_isDeployed = true;
|
42
|
+
// _isDeployed = true;
|
43
43
|
}
|
44
44
|
|
45
45
|
//--- view functions ----------------------------------------------------//
|
@@ -14,7 +14,7 @@ import {Versionable} from "../../shared/Versionable.sol";
|
|
14
14
|
import {INftOwnable} from "../../shared/INftOwnable.sol";
|
15
15
|
|
16
16
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
17
|
-
import {POOL, BUNDLE} from "../../types/ObjectType.sol";
|
17
|
+
import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
|
18
18
|
import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
|
19
19
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
20
20
|
import {Version, VersionLib} from "../../types/Version.sol";
|
@@ -24,23 +24,22 @@ import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
|
24
24
|
import {IService} from "../../shared/IService.sol";
|
25
25
|
import {Service} from "../../shared/Service.sol";
|
26
26
|
import {BundleManager} from "../BundleManager.sol";
|
27
|
-
import {
|
27
|
+
import {ComponentService} from "../base/ComponentService.sol";
|
28
28
|
import {IPoolService} from "./IPoolService.sol";
|
29
29
|
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
30
30
|
import {InstanceService} from "../InstanceService.sol";
|
31
31
|
import {InstanceReader} from "../InstanceReader.sol";
|
32
|
-
import {
|
32
|
+
import {IComponent} from "../../components/IComponent.sol";
|
33
|
+
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
33
34
|
|
34
35
|
string constant POOL_SERVICE_NAME = "PoolService";
|
35
36
|
|
36
37
|
contract PoolService is
|
37
|
-
|
38
|
+
ComponentService,
|
38
39
|
IPoolService
|
39
40
|
{
|
40
41
|
using NftIdLib for NftId;
|
41
42
|
|
42
|
-
string public constant NAME = "PoolService";
|
43
|
-
|
44
43
|
address internal _registryAddress;
|
45
44
|
|
46
45
|
function _initialize(
|
@@ -56,50 +55,36 @@ contract PoolService is
|
|
56
55
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
57
56
|
// TODO while PoolService is not deployed in PoolServiceManager constructor
|
58
57
|
// owner is PoolServiceManager deployer
|
59
|
-
|
60
|
-
|
61
|
-
_registerInterface(type(IPoolService).interfaceId);
|
58
|
+
initializeService(registryAddress, owner);
|
59
|
+
registerInterface(type(IPoolService).interfaceId);
|
62
60
|
}
|
63
61
|
|
64
|
-
function
|
65
|
-
return
|
62
|
+
function getDomain() public pure override(Service, IService) returns(ObjectType) {
|
63
|
+
return POOL();
|
66
64
|
}
|
67
65
|
|
68
66
|
function register(address poolAddress)
|
69
67
|
external
|
70
68
|
returns(NftId poolNftId)
|
71
69
|
{
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
poolNftId = info.nftId;
|
91
|
-
ISetup.PoolSetupInfo memory initialSetup = _decodeAndVerifyPoolSetup(data);
|
92
|
-
instance.createPoolSetup(poolNftId, initialSetup);
|
93
|
-
}
|
94
|
-
|
95
|
-
function _decodeAndVerifyPoolSetup(bytes memory data) internal returns(ISetup.PoolSetupInfo memory setup)
|
96
|
-
{
|
97
|
-
setup = abi.decode(
|
98
|
-
data,
|
99
|
-
(ISetup.PoolSetupInfo)
|
100
|
-
);
|
101
|
-
|
102
|
-
// TODO add checks if applicable
|
70
|
+
(
|
71
|
+
IComponent component,
|
72
|
+
address owner,
|
73
|
+
IInstance instance,
|
74
|
+
NftId instanceNftId
|
75
|
+
) = _checkComponentForRegistration(
|
76
|
+
poolAddress,
|
77
|
+
POOL(),
|
78
|
+
POOL_OWNER_ROLE());
|
79
|
+
|
80
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
81
|
+
IRegistry.ObjectInfo memory poolInfo = getRegistryService().registerPool(pool, owner);
|
82
|
+
pool.linkToRegisteredNftId();
|
83
|
+
poolNftId = poolInfo.nftId;
|
84
|
+
|
85
|
+
instance.createPoolSetup(poolNftId, pool.getSetupInfo());
|
86
|
+
getInstanceService().createGifTarget(instanceNftId, poolAddress, pool.getName());
|
87
|
+
getInstanceService().grantPoolDefaultPermissions(instanceNftId, poolAddress, pool.getName());
|
103
88
|
}
|
104
89
|
|
105
90
|
function setFees(
|