@etherisc/gif-next 0.0.2-790d44b-698 → 0.0.2-7a9d124-838
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 +148 -26
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +176 -23
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +267 -54
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +129 -23
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -188
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -238
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -213
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +300 -96
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +355 -80
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
- 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/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- 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/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +747 -1140
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +480 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2322 -1223
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1407 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +931 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +508 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +198 -22
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
- 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 +37 -245
- 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 +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +294 -62
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +269 -37
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +444 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +121 -60
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +118 -38
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +205 -38
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +137 -69
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +358 -39
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +448 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +269 -97
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +472 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +358 -37
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +947 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +379 -294
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1293 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +513 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +119 -39
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +135 -133
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +144 -40
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +205 -48
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
- 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 +18 -2
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
- 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/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
- 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 +4 -0
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
- 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/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
- 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 +134 -8
- 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 +15 -2
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
- 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 +22 -3
- package/contracts/components/BaseComponent.sol +26 -29
- package/contracts/components/Distribution.sol +45 -18
- package/contracts/components/IBaseComponent.sol +9 -3
- package/contracts/components/IDistributionComponent.sol +3 -6
- package/contracts/components/IPoolComponent.sol +2 -11
- package/contracts/components/IProductComponent.sol +4 -7
- package/contracts/components/Pool.sol +81 -74
- package/contracts/components/Product.sol +104 -47
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/AccessManagedSimple.sol +115 -0
- package/contracts/instance/AccessManagerSimple.sol +692 -0
- package/contracts/instance/IAccessManagerSimple.sol +391 -0
- package/contracts/instance/IInstance.sol +46 -45
- package/contracts/instance/IInstanceService.sol +30 -0
- package/contracts/instance/Instance.sol +426 -57
- package/contracts/instance/InstanceAccessManager.sol +288 -0
- package/contracts/instance/InstanceReader.sol +315 -0
- package/contracts/instance/InstanceService.sol +198 -0
- package/contracts/instance/InstanceServiceManager.sol +57 -0
- package/contracts/instance/base/ComponentServiceBase.sol +95 -10
- package/contracts/instance/base/IInstanceBase.sol +3 -2
- package/contracts/instance/base/IKeyValueStore.sol +13 -14
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +49 -38
- package/contracts/instance/base/Lifecycle.sol +1 -1
- package/contracts/instance/module/IAccess.sol +38 -0
- package/contracts/instance/module/IBundle.sol +20 -0
- package/contracts/instance/module/IDistribution.sol +39 -0
- package/contracts/instance/module/IPolicy.sol +45 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/instance/module/ISetup.sol +44 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ComponentOwnerService.sol +232 -72
- package/contracts/instance/service/DistributionService.sol +49 -20
- package/contracts/instance/service/DistributionServiceManager.sol +54 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -3
- package/contracts/instance/service/IDistributionService.sol +1 -1
- package/contracts/instance/service/IPoolService.sol +5 -1
- package/contracts/instance/service/IProductService.sol +6 -6
- package/contracts/instance/service/PoolService.sol +107 -58
- package/contracts/instance/service/PoolServiceManager.sol +54 -0
- package/contracts/instance/service/ProductService.sol +194 -139
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +80 -37
- package/contracts/registry/IRegistry.sol +47 -25
- package/contracts/registry/IRegistryService.sol +50 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +310 -324
- package/contracts/registry/RegistryService.sol +358 -0
- package/contracts/registry/RegistryServiceManager.sol +80 -0
- package/contracts/registry/TokenRegistry.sol +111 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/ERC165.sol +6 -2
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +8 -15
- package/contracts/{instance/base → shared}/IService.sol +3 -3
- package/contracts/shared/IVersionable.sol +15 -13
- package/contracts/shared/NftOwnable.sol +134 -0
- package/contracts/shared/ProxyManager.sol +94 -0
- package/contracts/shared/Registerable.sol +63 -59
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +55 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +49 -43
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRegisterable.sol +5 -6
- package/contracts/test/TestRoleId.sol +1 -1
- package/contracts/test/TestService.sol +5 -13
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +3 -3
- package/contracts/types/Key32.sol +8 -3
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +35 -14
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RoleId.sol +61 -9
- package/contracts/types/StateId.sol +5 -1
- package/contracts/types/Timestamp.sol +7 -3
- package/contracts/types/UFixed.sol +128 -12
- package/contracts/types/Version.sol +5 -1
- package/package.json +4 -3
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
- package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.dbg.json +0 -4
- package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.json +0 -248
- package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/contracts/experiment/statemachine/README.md +0 -112
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/InstanceBase.sol +0 -91
- package/contracts/instance/base/ModuleBase.sol +0 -57
- package/contracts/instance/base/ServiceBase.sol +0 -37
- package/contracts/instance/module/access/Access.sol +0 -149
- package/contracts/instance/module/access/IAccess.sol +0 -53
- package/contracts/instance/module/bundle/BundleModule.sol +0 -134
- package/contracts/instance/module/bundle/IBundle.sol +0 -53
- package/contracts/instance/module/component/ComponentModule.sol +0 -70
- package/contracts/instance/module/component/IComponent.sol +0 -28
- package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
- package/contracts/instance/module/distribution/IDistribution.sol +0 -10
- package/contracts/instance/module/policy/IPolicy.sol +0 -63
- package/contracts/instance/module/policy/PolicyModule.sol +0 -91
- package/contracts/instance/module/pool/IPoolModule.sol +0 -40
- package/contracts/instance/module/pool/PoolModule.sol +0 -90
- package/contracts/instance/module/risk/IRisk.sol +0 -26
- package/contracts/instance/module/risk/RiskModule.sol +0 -62
- package/contracts/instance/module/treasury/ITreasury.sol +0 -82
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
- package/contracts/registry/IChainNft.sol +0 -21
- package/contracts/registry/IRegistryLinked.sol +0 -8
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/shared/Proxy.sol +0 -94
- package/contracts/test/TestDistribution.sol +0 -21
- package/contracts/test/TestPool.sol +0 -25
- package/contracts/test/TestProduct.sol +0 -72
- package/contracts/types/ReferralId.sol +0 -48
@@ -3,33 +3,43 @@ pragma solidity ^0.8.19;
|
|
3
3
|
|
4
4
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
5
|
import {IProductComponent} from "../../components/IProductComponent.sol";
|
6
|
+
import {Product} from "../../components/Product.sol";
|
6
7
|
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
7
8
|
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
8
|
-
import {IInstance} from "
|
9
|
-
import {IPolicy
|
10
|
-
import {
|
11
|
-
import {
|
12
|
-
import {IBundle} from "../module/bundle/IBundle.sol";
|
9
|
+
import {IInstance} from "../IInstance.sol";
|
10
|
+
import {IPolicy} from "../module/IPolicy.sol";
|
11
|
+
import {IRisk} from "../module/IRisk.sol";
|
12
|
+
import {IBundle} from "../module/IBundle.sol";
|
13
13
|
import {IProductService} from "./IProductService.sol";
|
14
|
-
import {ITreasury
|
14
|
+
import {ITreasury} from "../module/ITreasury.sol";
|
15
|
+
import {ISetup} from "../module/ISetup.sol";
|
16
|
+
|
17
|
+
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
15
18
|
|
16
19
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
17
20
|
import {Versionable} from "../../shared/Versionable.sol";
|
18
21
|
|
19
22
|
import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
20
|
-
import {UFixed,
|
23
|
+
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
21
24
|
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
22
25
|
import {ObjectType, INSTANCE, PRODUCT, POLICY} from "../../types/ObjectType.sol";
|
23
|
-
import {APPLIED, UNDERWRITTEN, ACTIVE} from "../../types/StateId.sol";
|
24
|
-
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
26
|
+
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
|
27
|
+
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
25
28
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
26
|
-
import {ReferralId} from "../../types/
|
29
|
+
import {ReferralId} from "../../types/Referral.sol";
|
27
30
|
import {RiskId} from "../../types/RiskId.sol";
|
28
31
|
import {StateId} from "../../types/StateId.sol";
|
29
32
|
import {Version, VersionLib} from "../../types/Version.sol";
|
30
33
|
|
34
|
+
import {IService} from "../../shared/IService.sol";
|
35
|
+
import {Service} from "../../shared/Service.sol";
|
31
36
|
import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
|
32
37
|
import {IProductService} from "./IProductService.sol";
|
38
|
+
import {InstanceReader} from "../InstanceReader.sol";
|
39
|
+
import {IPoolService} from "./PoolService.sol";
|
40
|
+
import {POOL_SERVICE_NAME} from "./PoolService.sol";
|
41
|
+
|
42
|
+
string constant PRODUCT_SERVICE_NAME = "ProductService";
|
33
43
|
|
34
44
|
// TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
|
35
45
|
contract ProductService is ComponentServiceBase, IProductService {
|
@@ -37,29 +47,43 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
37
47
|
|
38
48
|
string public constant NAME = "ProductService";
|
39
49
|
|
50
|
+
address internal _registryAddress;
|
51
|
+
IPoolService internal _poolService;
|
52
|
+
|
40
53
|
event LogProductServiceSender(address sender);
|
41
54
|
|
42
|
-
|
43
|
-
address
|
44
|
-
|
45
|
-
)
|
55
|
+
function _initialize(
|
56
|
+
address owner,
|
57
|
+
bytes memory data
|
58
|
+
)
|
59
|
+
internal
|
60
|
+
initializer
|
61
|
+
virtual override
|
46
62
|
{
|
63
|
+
address initialOwner = address(0);
|
64
|
+
(_registryAddress, initialOwner) = abi.decode(data, (address, address));
|
65
|
+
|
66
|
+
_initializeService(_registryAddress, owner);
|
67
|
+
|
68
|
+
_poolService = IPoolService(_registry.getServiceAddress(POOL_SERVICE_NAME, getMajorVersion()));
|
69
|
+
|
70
|
+
_registerInterface(type(IService).interfaceId);
|
47
71
|
_registerInterface(type(IProductService).interfaceId);
|
48
72
|
}
|
49
73
|
|
50
|
-
function getVersion()
|
51
|
-
public
|
52
|
-
pure
|
53
|
-
virtual override (IVersionable, Versionable)
|
54
|
-
returns(Version)
|
55
|
-
{
|
56
|
-
return VersionLib.toVersion(3,0,0);
|
57
|
-
}
|
58
74
|
|
59
|
-
function getName()
|
75
|
+
function getName() public pure override(IService, Service) returns(string memory name) {
|
60
76
|
return NAME;
|
61
77
|
}
|
62
78
|
|
79
|
+
function _finalizeComponentRegistration(NftId componentNftId, bytes memory initialObjData, IInstance instance) internal override {
|
80
|
+
ISetup.ProductSetupInfo memory initialSetup = abi.decode(
|
81
|
+
initialObjData,
|
82
|
+
(ISetup.ProductSetupInfo)
|
83
|
+
);
|
84
|
+
instance.createProductSetup(componentNftId, initialSetup);
|
85
|
+
}
|
86
|
+
|
63
87
|
function setFees(
|
64
88
|
Fee memory productFee,
|
65
89
|
Fee memory processingFee
|
@@ -68,11 +92,14 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
68
92
|
override
|
69
93
|
{
|
70
94
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
95
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
71
96
|
NftId productNftId = productInfo.nftId;
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
97
|
+
|
98
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
99
|
+
productSetupInfo.productFee = productFee;
|
100
|
+
productSetupInfo.processingFee = processingFee;
|
101
|
+
|
102
|
+
instance.updateProductSetup(productNftId, productSetupInfo, KEEP_STATE());
|
76
103
|
}
|
77
104
|
|
78
105
|
function createRisk(
|
@@ -81,22 +108,22 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
81
108
|
) external override {
|
82
109
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
83
110
|
NftId productNftId = productInfo.nftId;
|
111
|
+
IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
|
84
112
|
instance.createRisk(
|
85
113
|
riskId,
|
86
|
-
|
87
|
-
data
|
114
|
+
riskInfo
|
88
115
|
);
|
89
116
|
}
|
90
117
|
|
91
|
-
function
|
118
|
+
function updateRisk(
|
92
119
|
RiskId riskId,
|
93
|
-
|
120
|
+
bytes memory data
|
94
121
|
) external {
|
95
122
|
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
96
|
-
instance.
|
97
|
-
|
98
|
-
|
99
|
-
);
|
123
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
124
|
+
IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
|
125
|
+
riskInfo.data = data;
|
126
|
+
instance.updateRisk(riskId, riskInfo, KEEP_STATE());
|
100
127
|
}
|
101
128
|
|
102
129
|
function updateRiskState(
|
@@ -104,16 +131,13 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
104
131
|
StateId state
|
105
132
|
) external {
|
106
133
|
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
107
|
-
instance.updateRiskState(
|
108
|
-
riskId,
|
109
|
-
state
|
110
|
-
);
|
134
|
+
instance.updateRiskState(riskId, state);
|
111
135
|
}
|
112
136
|
|
113
|
-
function _getAndVerifyInstanceAndProduct() internal view returns (
|
137
|
+
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
114
138
|
IRegistry.ObjectInfo memory productInfo;
|
115
139
|
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
116
|
-
product =
|
140
|
+
product = Product(productInfo.objectAddress);
|
117
141
|
}
|
118
142
|
|
119
143
|
function calculatePremium(
|
@@ -135,7 +159,7 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
135
159
|
uint256 distributionFeeAmount
|
136
160
|
)
|
137
161
|
{
|
138
|
-
|
162
|
+
Product product = _getAndVerifyInstanceAndProduct();
|
139
163
|
uint256 netPremiumAmount = product.calculateNetPremium(
|
140
164
|
sumInsuredAmount,
|
141
165
|
riskId,
|
@@ -162,7 +186,7 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
162
186
|
|
163
187
|
function _calculateFeeAmounts(
|
164
188
|
uint256 netPremiumAmount,
|
165
|
-
|
189
|
+
Product product,
|
166
190
|
NftId bundleNftId,
|
167
191
|
ReferralId referralId
|
168
192
|
)
|
@@ -175,18 +199,31 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
175
199
|
uint256 distributionFeeAmount
|
176
200
|
)
|
177
201
|
{
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
202
|
+
InstanceReader instanceReader;
|
203
|
+
{
|
204
|
+
IInstance instance = product.getInstance();
|
205
|
+
instanceReader = instance.getInstanceReader();
|
206
|
+
}
|
207
|
+
|
208
|
+
NftId poolNftId = product.getPoolNftId();
|
209
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
210
|
+
require(bundleInfo.poolNftId == poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
|
182
211
|
|
183
|
-
|
184
|
-
|
212
|
+
{
|
213
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
|
214
|
+
(productFeeAmount,) = FeeLib.calculateFee(productSetupInfo.productFee, netPremiumAmount);
|
215
|
+
}
|
216
|
+
{
|
217
|
+
ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
218
|
+
(poolFeeAmount,) = FeeLib.calculateFee(poolSetupInfo.poolFee, netPremiumAmount);
|
219
|
+
}
|
220
|
+
{
|
221
|
+
NftId distributionNftId = product.getDistributionNftId();
|
222
|
+
ISetup.DistributionSetupInfo memory distributionSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
|
223
|
+
(distributionFeeAmount,) = FeeLib.calculateFee(distributionSetupInfo.distributionFee, netPremiumAmount);
|
224
|
+
}
|
225
|
+
|
185
226
|
(bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
|
186
|
-
|
187
|
-
IRegistry.ObjectInfo memory distributionInfo = _registry.getObjectInfo(treasuryInfo.distributionNftId);
|
188
|
-
IDistributionComponent distribution = IDistributionComponent(distributionInfo.objectAddress);
|
189
|
-
distributionFeeAmount = distribution.calculateFeeAmount(referralId, netPremiumAmount);
|
190
227
|
}
|
191
228
|
|
192
229
|
|
@@ -202,11 +239,16 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
202
239
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
203
240
|
// TODO add validations (see create bundle in pool service)
|
204
241
|
|
205
|
-
policyNftId =
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
242
|
+
policyNftId = getRegistryService().registerPolicy(
|
243
|
+
IRegistry.ObjectInfo(
|
244
|
+
zeroNftId(),
|
245
|
+
productInfo.nftId,
|
246
|
+
POLICY(),
|
247
|
+
false, // intercepting property for policies is defined on product
|
248
|
+
address(0),
|
249
|
+
applicationOwner,
|
250
|
+
""
|
251
|
+
)
|
210
252
|
);
|
211
253
|
|
212
254
|
(uint256 premiumAmount,,,,) = calculatePremium(
|
@@ -218,42 +260,53 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
218
260
|
referralId
|
219
261
|
);
|
220
262
|
|
221
|
-
|
222
|
-
policyNftId,
|
263
|
+
IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
|
223
264
|
productInfo.nftId,
|
265
|
+
bundleNftId,
|
224
266
|
referralId,
|
225
267
|
riskId,
|
226
268
|
sumInsuredAmount,
|
227
269
|
premiumAmount,
|
270
|
+
0,
|
228
271
|
lifetime,
|
229
|
-
|
272
|
+
applicationData,
|
273
|
+
"",
|
274
|
+
0,
|
275
|
+
0,
|
276
|
+
0,
|
277
|
+
zeroTimestamp(),
|
278
|
+
zeroTimestamp(),
|
279
|
+
zeroTimestamp()
|
230
280
|
);
|
281
|
+
|
282
|
+
instance.createPolicy(policyNftId, policyInfo);
|
283
|
+
instance.updatePolicyState(policyNftId, APPLIED());
|
231
284
|
|
232
285
|
// TODO add logging
|
233
286
|
}
|
234
287
|
|
235
288
|
function _getAndVerifyUnderwritingSetup(
|
236
289
|
IInstance instance,
|
237
|
-
|
290
|
+
InstanceReader instanceReader,
|
291
|
+
IPolicy.PolicyInfo memory policyInfo,
|
292
|
+
ISetup.ProductSetupInfo memory productSetupInfo
|
238
293
|
)
|
239
294
|
internal
|
240
295
|
view
|
241
296
|
returns (
|
242
|
-
ITreasury.TreasuryInfo memory treasuryInfo,
|
243
297
|
NftId bundleNftId,
|
244
298
|
IBundle.BundleInfo memory bundleInfo,
|
245
299
|
uint256 collateralAmount
|
246
300
|
)
|
247
301
|
{
|
248
302
|
// check match between policy and bundle (via pool)
|
249
|
-
treasuryInfo = instance.getTreasuryInfo(policyInfo.productNftId);
|
250
303
|
bundleNftId = policyInfo.bundleNftId;
|
251
|
-
bundleInfo =
|
252
|
-
require(bundleInfo.poolNftId ==
|
304
|
+
bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
305
|
+
require(bundleInfo.poolNftId == productSetupInfo.poolNftId, "POLICY_BUNDLE_MISMATCH");
|
253
306
|
|
254
307
|
// calculate required collateral
|
255
|
-
NftId poolNftId =
|
256
|
-
|
308
|
+
NftId poolNftId = productSetupInfo.poolNftId;
|
309
|
+
ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
257
310
|
|
258
311
|
// obtain remaining return values
|
259
312
|
collateralAmount = calculateRequiredCollateral(poolInfo.collateralizationLevel, policyInfo.sumInsuredAmount);
|
@@ -270,12 +323,13 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
270
323
|
returns (IBundle.BundleInfo memory)
|
271
324
|
{
|
272
325
|
bundleInfo.lockedAmount += collateralAmount;
|
273
|
-
|
326
|
+
// FIXME: this
|
327
|
+
// instance.collateralizePolicy(bundleNftId, policyNftId, collateralAmount);
|
274
328
|
return bundleInfo;
|
275
329
|
}
|
276
330
|
|
277
331
|
function _underwriteByPool(
|
278
|
-
|
332
|
+
NftId poolNftId,
|
279
333
|
NftId policyNftId,
|
280
334
|
IPolicy.PolicyInfo memory policyInfo,
|
281
335
|
bytes memory bundleFilter,
|
@@ -283,7 +337,7 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
283
337
|
)
|
284
338
|
internal
|
285
339
|
{
|
286
|
-
address poolAddress =
|
340
|
+
address poolAddress = getRegistry().getObjectInfo(poolNftId).objectAddress;
|
287
341
|
IPoolComponent pool = IPoolComponent(poolAddress);
|
288
342
|
pool.underwrite(
|
289
343
|
policyNftId,
|
@@ -316,26 +370,29 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
316
370
|
IRegistry.ObjectInfo memory productInfo,
|
317
371
|
IInstance instance
|
318
372
|
) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
373
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
319
374
|
|
320
375
|
// check match between policy and calling product
|
321
376
|
NftId productNftId = productInfo.nftId;
|
322
|
-
|
377
|
+
// FIXME: this
|
378
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
323
379
|
require(policyInfo.productNftId == productNftId, "POLICY_PRODUCT_MISMATCH");
|
324
|
-
require(
|
380
|
+
require(instanceReader.getPolicyState(policyNftId) == APPLIED(), "ERROR:PRS-021:STATE_NOT_APPLIED");
|
325
381
|
|
326
|
-
ITreasury.TreasuryInfo memory treasuryInfo;
|
327
382
|
NftId bundleNftId;
|
328
383
|
IBundle.BundleInfo memory bundleInfo;
|
329
384
|
uint256 collateralAmount;
|
385
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
330
386
|
|
331
387
|
(
|
332
|
-
treasuryInfo,
|
333
388
|
bundleNftId,
|
334
389
|
bundleInfo,
|
335
390
|
collateralAmount
|
336
391
|
) = _getAndVerifyUnderwritingSetup(
|
337
392
|
instance,
|
338
|
-
|
393
|
+
instanceReader,
|
394
|
+
policyInfo,
|
395
|
+
productSetupInfo
|
339
396
|
);
|
340
397
|
|
341
398
|
// lock bundle collateral
|
@@ -345,16 +402,11 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
345
402
|
bundleInfo,
|
346
403
|
policyNftId,
|
347
404
|
collateralAmount);
|
348
|
-
|
349
|
-
// set policy state to underwritten
|
350
|
-
instance.updatePolicyState(policyNftId, UNDERWRITTEN());
|
351
|
-
|
405
|
+
|
352
406
|
// optional activation of policy
|
353
407
|
if(activateAt > zeroTimestamp()) {
|
354
408
|
policyInfo.activatedAt = activateAt;
|
355
409
|
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
356
|
-
|
357
|
-
instance.updatePolicyState(policyNftId, ACTIVE());
|
358
410
|
}
|
359
411
|
|
360
412
|
// optional collection of premium
|
@@ -362,7 +414,6 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
362
414
|
uint256 netPremiumAmount = _processPremiumByTreasury(
|
363
415
|
instance,
|
364
416
|
productInfo.nftId,
|
365
|
-
treasuryInfo,
|
366
417
|
policyNftId,
|
367
418
|
policyInfo.premiumAmount);
|
368
419
|
|
@@ -370,17 +421,18 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
370
421
|
bundleInfo.balanceAmount += netPremiumAmount;
|
371
422
|
}
|
372
423
|
|
373
|
-
instance.
|
374
|
-
|
424
|
+
instance.updatePolicy(policyNftId, policyInfo, UNDERWRITTEN());
|
425
|
+
_poolService.updateBundle(productInfo.parentNftId, bundleNftId, bundleInfo, KEEP_STATE());
|
375
426
|
|
376
427
|
// involve pool if necessary
|
377
428
|
{
|
378
|
-
NftId poolNftId =
|
379
|
-
|
429
|
+
NftId poolNftId = bundleInfo.poolNftId;
|
430
|
+
ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
380
431
|
|
381
|
-
|
432
|
+
// FIXME: use poolInfo.isVerifying ???
|
433
|
+
if(poolInfo.isIntercepting) {
|
382
434
|
_underwriteByPool(
|
383
|
-
|
435
|
+
poolNftId,
|
384
436
|
policyNftId,
|
385
437
|
policyInfo,
|
386
438
|
bundleInfo.filter,
|
@@ -393,7 +445,7 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
393
445
|
}
|
394
446
|
|
395
447
|
function calculateRequiredCollateral(UFixed collateralizationLevel, uint256 sumInsuredAmount) public pure override returns(uint256 collateralAmount) {
|
396
|
-
UFixed sumInsuredUFixed =
|
448
|
+
UFixed sumInsuredUFixed = UFixedLib.toUFixed(sumInsuredAmount);
|
397
449
|
UFixed collateralUFixed = collateralizationLevel * sumInsuredUFixed;
|
398
450
|
return collateralUFixed.toInt();
|
399
451
|
}
|
@@ -403,47 +455,49 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
403
455
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
404
456
|
|
405
457
|
// perform actual token transfers
|
406
|
-
|
407
|
-
|
458
|
+
// FIXME: this
|
459
|
+
// IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
|
460
|
+
// ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(productInfo.nftId);
|
408
461
|
|
409
|
-
uint256 premiumAmount = policyInfo.premiumAmount;
|
410
|
-
_processPremiumByTreasury(instance, productInfo.nftId, treasuryInfo, policyNftId, premiumAmount);
|
462
|
+
// uint256 premiumAmount = policyInfo.premiumAmount;
|
463
|
+
// _processPremiumByTreasury(instance, productInfo.nftId, treasuryInfo, policyNftId, premiumAmount);
|
411
464
|
|
412
|
-
// policy level book keeping for premium paid
|
413
|
-
policyInfo.premiumPaidAmount += premiumAmount;
|
465
|
+
// // policy level book keeping for premium paid
|
466
|
+
// policyInfo.premiumPaidAmount += premiumAmount;
|
414
467
|
|
415
|
-
// optional activation of policy
|
416
|
-
if(activateAt > zeroTimestamp()) {
|
417
|
-
|
418
|
-
|
419
|
-
|
468
|
+
// // optional activation of policy
|
469
|
+
// if(activateAt > zeroTimestamp()) {
|
470
|
+
// require(
|
471
|
+
// policyInfo.activatedAt.eqz(),
|
472
|
+
// "ERROR:PRS-030:ALREADY_ACTIVATED");
|
420
473
|
|
421
|
-
|
422
|
-
|
474
|
+
// policyInfo.activatedAt = activateAt;
|
475
|
+
// policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
423
476
|
|
424
|
-
|
425
|
-
}
|
477
|
+
// instance.updatePolicyState(policyNftId, ACTIVE());
|
478
|
+
// }
|
426
479
|
|
427
|
-
instance.setPolicyInfo(policyNftId, policyInfo);
|
480
|
+
// instance.setPolicyInfo(policyNftId, policyInfo);
|
428
481
|
|
429
482
|
// TODO add logging
|
430
483
|
}
|
431
484
|
|
485
|
+
// FIXME: this
|
432
486
|
function activate(NftId policyNftId, Timestamp activateAt) external override {
|
433
487
|
// check caller is registered product
|
434
488
|
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
435
489
|
|
436
|
-
IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
|
490
|
+
// IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
|
437
491
|
|
438
|
-
require(
|
439
|
-
|
440
|
-
|
492
|
+
// require(
|
493
|
+
// policyInfo.activatedAt.eqz(),
|
494
|
+
// "ERROR:PRS-020:ALREADY_ACTIVATED");
|
441
495
|
|
442
|
-
policyInfo.activatedAt = activateAt;
|
443
|
-
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
496
|
+
// policyInfo.activatedAt = activateAt;
|
497
|
+
// policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
444
498
|
|
445
|
-
instance.setPolicyInfo(policyNftId, policyInfo);
|
446
|
-
instance.updatePolicyState(policyNftId, ACTIVE());
|
499
|
+
// instance.setPolicyInfo(policyNftId, policyInfo);
|
500
|
+
// instance.updatePolicyState(policyNftId, ACTIVE());
|
447
501
|
|
448
502
|
// TODO add logging
|
449
503
|
}
|
@@ -463,14 +517,14 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
463
517
|
view
|
464
518
|
returns (NftId poolNftid)
|
465
519
|
{
|
466
|
-
|
520
|
+
// FIXME: this
|
521
|
+
// return instance.getTreasuryInfo(productNftId).poolNftId;
|
467
522
|
}
|
468
523
|
|
469
524
|
|
470
525
|
function _processPremiumByTreasury(
|
471
526
|
IInstance instance,
|
472
527
|
NftId productNftId,
|
473
|
-
ITreasury.TreasuryInfo memory treasuryInfo,
|
474
528
|
NftId policyNftId,
|
475
529
|
uint256 premiumAmount
|
476
530
|
)
|
@@ -479,29 +533,30 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
479
533
|
{
|
480
534
|
// process token transfer(s)
|
481
535
|
if(premiumAmount > 0) {
|
482
|
-
|
483
|
-
|
484
|
-
address
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
536
|
+
// FIXME: this
|
537
|
+
// TokenHandler tokenHandler = instance.getTokenHandler(productNftId);
|
538
|
+
// address policyOwner = getRegistry().ownerOf(policyNftId);
|
539
|
+
// address poolWallet = instance.getComponentWallet(treasuryInfo.poolNftId);
|
540
|
+
// netPremiumAmount = premiumAmount;
|
541
|
+
// Fee memory productFee = treasuryInfo.productFee;
|
542
|
+
|
543
|
+
// if (FeeLib.feeIsZero(productFee)) {
|
544
|
+
// tokenHandler.transfer(
|
545
|
+
// policyOwner,
|
546
|
+
// poolWallet,
|
547
|
+
// premiumAmount
|
548
|
+
// );
|
549
|
+
// } else {
|
550
|
+
// (uint256 feeAmount, uint256 netAmount) = instance.calculateFeeAmount(
|
551
|
+
// premiumAmount,
|
552
|
+
// productFee
|
553
|
+
// );
|
554
|
+
|
555
|
+
// address productWallet = instance.getComponentWallet(productNftId);
|
556
|
+
// tokenHandler.transfer(policyOwner, productWallet, feeAmount);
|
557
|
+
// tokenHandler.transfer(policyOwner, poolWallet, netAmount);
|
558
|
+
// netPremiumAmount = netAmount;
|
559
|
+
// }
|
505
560
|
}
|
506
561
|
|
507
562
|
// TODO add logging
|
@@ -0,0 +1,54 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../../shared/ProxyManager.sol";
|
6
|
+
import {ProductService} from "./ProductService.sol";
|
7
|
+
import {Registry} from "../../registry/Registry.sol";
|
8
|
+
import {RegistryService} from "../../registry/RegistryService.sol";
|
9
|
+
import {VersionLib} from "../../types/Version.sol";
|
10
|
+
|
11
|
+
contract ProductServiceManager is ProxyManager {
|
12
|
+
|
13
|
+
ProductService private _productService;
|
14
|
+
|
15
|
+
/// @dev initializes proxy manager with product service implementation
|
16
|
+
constructor(
|
17
|
+
address registryAddress
|
18
|
+
)
|
19
|
+
ProxyManager()
|
20
|
+
{
|
21
|
+
ProductService svc = new ProductService();
|
22
|
+
bytes memory data = abi.encode(registryAddress, address(this));
|
23
|
+
IVersionable versionable = deploy(
|
24
|
+
address(svc),
|
25
|
+
data);
|
26
|
+
|
27
|
+
_productService = ProductService(address(versionable));
|
28
|
+
|
29
|
+
// Registry registry = Registry(registryAddress);
|
30
|
+
// address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
|
31
|
+
// RegistryService registryService = RegistryService(registryServiceAddress);
|
32
|
+
// TODO this must have a role or own nft to register service
|
33
|
+
//registryService.registerService(_productService);
|
34
|
+
|
35
|
+
// TODO no nft to link yet
|
36
|
+
// link ownership of instance service manager ot nft owner of instance service
|
37
|
+
//_linkToNftOwnable(
|
38
|
+
// address(registryAddress),
|
39
|
+
// address(_productService));
|
40
|
+
|
41
|
+
// implies that after this constructor call only upgrade functionality is available
|
42
|
+
_isDeployed = true;
|
43
|
+
}
|
44
|
+
|
45
|
+
//--- view functions ----------------------------------------------------//
|
46
|
+
function getProductService()
|
47
|
+
external
|
48
|
+
view
|
49
|
+
returns (ProductService productService)
|
50
|
+
{
|
51
|
+
return _productService;
|
52
|
+
}
|
53
|
+
|
54
|
+
}
|