@etherisc/gif-next 0.0.2-e46206a-486 → 0.0.2-e59218b-293
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 +4 -0
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +26 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +94 -33
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +26 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -25
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -59
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -50
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +131 -65
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +168 -58
- 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/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 +745 -1020
- 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 +2238 -1030
- 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 +1412 -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 +59 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.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 -253
- 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 +32 -48
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +111 -41
- 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/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +87 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +40 -31
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +200 -43
- 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 +176 -105
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +488 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +201 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +94 -19
- 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 +172 -49
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +61 -29
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +47 -34
- 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 +1 -1
- 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 +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +4 -4
- 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} +2 -104
- 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} +2 -2
- 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 +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/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 +4 -4
- 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 +11 -11
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
- 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/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- 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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- 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/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- 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/StateId.sol/StateIdLib.json +2 -2
- 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/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 +15 -3
- package/contracts/components/Distribution.sol +22 -14
- package/contracts/components/IBaseComponent.sol +8 -2
- package/contracts/components/IDistributionComponent.sol +1 -3
- package/contracts/components/IPoolComponent.sol +0 -2
- package/contracts/components/IProductComponent.sol +1 -3
- package/contracts/components/Pool.sol +26 -26
- package/contracts/components/Product.sol +49 -60
- 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 -44
- package/contracts/instance/IInstanceService.sol +30 -0
- package/contracts/instance/Instance.sol +423 -63
- 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 +93 -8
- package/contracts/instance/base/IKeyValueStore.sol +13 -14
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +49 -39
- 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 +45 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ComponentOwnerService.sol +62 -60
- package/contracts/instance/service/DistributionService.sol +49 -15
- package/contracts/instance/service/DistributionServiceManager.sol +54 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -1
- package/contracts/instance/service/IDistributionService.sol +1 -1
- package/contracts/instance/service/IPoolService.sol +5 -1
- package/contracts/instance/service/IProductService.sol +8 -5
- package/contracts/instance/service/PoolService.sol +104 -52
- package/contracts/instance/service/PoolServiceManager.sol +54 -0
- package/contracts/instance/service/ProductService.sol +168 -111
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/IRegistry.sol +26 -2
- package/contracts/registry/IRegistryService.sol +34 -19
- package/contracts/registry/Registry.sol +61 -36
- package/contracts/registry/RegistryService.sol +42 -125
- package/contracts/registry/RegistryServiceManager.sol +21 -5
- package/contracts/registry/TokenRegistry.sol +111 -0
- package/contracts/shared/ERC165.sol +6 -2
- package/contracts/{instance/base → shared}/IService.sol +3 -3
- package/contracts/shared/NftOwnable.sol +2 -4
- package/contracts/shared/Registerable.sol +1 -0
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +55 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/test/TestService.sol +3 -5
- package/contracts/types/RoleId.sol +8 -0
- package/contracts/types/StateId.sol +4 -0
- package/contracts/types/Version.sol +4 -1
- package/package.json +1 -1
- 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/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/ComponentModule.sol/ComponentModule.json +0 -117
- 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 -271
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
- 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 -164
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
- 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 -638
- 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 -638
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/InstanceBase.sol +0 -89
- package/contracts/instance/base/ModuleBase.sol +0 -57
- package/contracts/instance/base/ServiceBase.sol +0 -44
- 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 -71
- 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 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -95
- 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 -84
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
- package/contracts/test/TestDistribution.sol +0 -22
- package/contracts/test/TestPool.sol +0 -27
- package/contracts/test/TestProduct.sol +0 -74
@@ -6,13 +6,15 @@ import {IProductComponent} from "../../components/IProductComponent.sol";
|
|
6
6
|
import {Product} from "../../components/Product.sol";
|
7
7
|
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
8
8
|
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
9
|
-
import {IInstance} from "
|
10
|
-
import {IPolicy
|
11
|
-
import {
|
12
|
-
import {
|
13
|
-
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";
|
14
13
|
import {IProductService} from "./IProductService.sol";
|
15
|
-
import {ITreasury
|
14
|
+
import {ITreasury} from "../module/ITreasury.sol";
|
15
|
+
import {ISetup} from "../module/ISetup.sol";
|
16
|
+
|
17
|
+
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
16
18
|
|
17
19
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
18
20
|
import {Versionable} from "../../shared/Versionable.sol";
|
@@ -21,7 +23,7 @@ import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
|
21
23
|
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
22
24
|
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
23
25
|
import {ObjectType, INSTANCE, PRODUCT, POLICY} from "../../types/ObjectType.sol";
|
24
|
-
import {APPLIED, UNDERWRITTEN, ACTIVE} from "../../types/StateId.sol";
|
26
|
+
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
|
25
27
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
26
28
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
27
29
|
import {ReferralId} from "../../types/Referral.sol";
|
@@ -29,10 +31,15 @@ import {RiskId} from "../../types/RiskId.sol";
|
|
29
31
|
import {StateId} from "../../types/StateId.sol";
|
30
32
|
import {Version, VersionLib} from "../../types/Version.sol";
|
31
33
|
|
32
|
-
import {IService} from "
|
33
|
-
import {
|
34
|
+
import {IService} from "../../shared/IService.sol";
|
35
|
+
import {Service} from "../../shared/Service.sol";
|
34
36
|
import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
|
35
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";
|
36
43
|
|
37
44
|
// TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
|
38
45
|
contract ProductService is ComponentServiceBase, IProductService {
|
@@ -40,22 +47,43 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
40
47
|
|
41
48
|
string public constant NAME = "ProductService";
|
42
49
|
|
50
|
+
address internal _registryAddress;
|
51
|
+
IPoolService internal _poolService;
|
52
|
+
|
43
53
|
event LogProductServiceSender(address sender);
|
44
54
|
|
45
|
-
|
46
|
-
address
|
47
|
-
|
48
|
-
|
49
|
-
|
55
|
+
function _initialize(
|
56
|
+
address owner,
|
57
|
+
bytes memory data
|
58
|
+
)
|
59
|
+
internal
|
60
|
+
initializer
|
61
|
+
virtual override
|
50
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);
|
51
71
|
_registerInterface(type(IProductService).interfaceId);
|
52
72
|
}
|
53
73
|
|
54
74
|
|
55
|
-
function getName() public pure override(IService,
|
75
|
+
function getName() public pure override(IService, Service) returns(string memory name) {
|
56
76
|
return NAME;
|
57
77
|
}
|
58
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
|
+
|
59
87
|
function setFees(
|
60
88
|
Fee memory productFee,
|
61
89
|
Fee memory processingFee
|
@@ -64,11 +92,14 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
64
92
|
override
|
65
93
|
{
|
66
94
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
95
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
67
96
|
NftId productNftId = productInfo.nftId;
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
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());
|
72
103
|
}
|
73
104
|
|
74
105
|
function createRisk(
|
@@ -77,22 +108,22 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
77
108
|
) external override {
|
78
109
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
79
110
|
NftId productNftId = productInfo.nftId;
|
111
|
+
IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
|
80
112
|
instance.createRisk(
|
81
113
|
riskId,
|
82
|
-
|
83
|
-
data
|
114
|
+
riskInfo
|
84
115
|
);
|
85
116
|
}
|
86
117
|
|
87
|
-
function
|
118
|
+
function updateRisk(
|
88
119
|
RiskId riskId,
|
89
|
-
|
120
|
+
bytes memory data
|
90
121
|
) external {
|
91
122
|
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
92
|
-
instance.
|
93
|
-
|
94
|
-
|
95
|
-
);
|
123
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
124
|
+
IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
|
125
|
+
riskInfo.data = data;
|
126
|
+
instance.updateRisk(riskId, riskInfo, KEEP_STATE());
|
96
127
|
}
|
97
128
|
|
98
129
|
function updateRiskState(
|
@@ -100,10 +131,7 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
100
131
|
StateId state
|
101
132
|
) external {
|
102
133
|
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
103
|
-
instance.updateRiskState(
|
104
|
-
riskId,
|
105
|
-
state
|
106
|
-
);
|
134
|
+
instance.updateRiskState(riskId, state);
|
107
135
|
}
|
108
136
|
|
109
137
|
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
@@ -171,18 +199,31 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
171
199
|
uint256 distributionFeeAmount
|
172
200
|
)
|
173
201
|
{
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
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");
|
178
211
|
|
179
|
-
|
180
|
-
|
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
|
+
|
181
226
|
(bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
|
182
|
-
|
183
|
-
IRegistry.ObjectInfo memory distributionInfo = getRegistry().getObjectInfo(treasuryInfo.distributionNftId);
|
184
|
-
IDistributionComponent distribution = IDistributionComponent(distributionInfo.objectAddress);
|
185
|
-
distributionFeeAmount = distribution.calculateFeeAmount(referralId, netPremiumAmount);
|
186
227
|
}
|
187
228
|
|
188
229
|
|
@@ -219,42 +260,53 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
219
260
|
referralId
|
220
261
|
);
|
221
262
|
|
222
|
-
|
223
|
-
policyNftId,
|
263
|
+
IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
|
224
264
|
productInfo.nftId,
|
265
|
+
bundleNftId,
|
225
266
|
referralId,
|
226
267
|
riskId,
|
227
268
|
sumInsuredAmount,
|
228
269
|
premiumAmount,
|
270
|
+
0,
|
229
271
|
lifetime,
|
230
|
-
|
272
|
+
applicationData,
|
273
|
+
"",
|
274
|
+
0,
|
275
|
+
0,
|
276
|
+
0,
|
277
|
+
zeroTimestamp(),
|
278
|
+
zeroTimestamp(),
|
279
|
+
zeroTimestamp()
|
231
280
|
);
|
281
|
+
|
282
|
+
instance.createPolicy(policyNftId, policyInfo);
|
283
|
+
instance.updatePolicyState(policyNftId, APPLIED());
|
232
284
|
|
233
285
|
// TODO add logging
|
234
286
|
}
|
235
287
|
|
236
288
|
function _getAndVerifyUnderwritingSetup(
|
237
289
|
IInstance instance,
|
238
|
-
|
290
|
+
InstanceReader instanceReader,
|
291
|
+
IPolicy.PolicyInfo memory policyInfo,
|
292
|
+
ISetup.ProductSetupInfo memory productSetupInfo
|
239
293
|
)
|
240
294
|
internal
|
241
295
|
view
|
242
296
|
returns (
|
243
|
-
ITreasury.TreasuryInfo memory treasuryInfo,
|
244
297
|
NftId bundleNftId,
|
245
298
|
IBundle.BundleInfo memory bundleInfo,
|
246
299
|
uint256 collateralAmount
|
247
300
|
)
|
248
301
|
{
|
249
302
|
// check match between policy and bundle (via pool)
|
250
|
-
treasuryInfo = instance.getTreasuryInfo(policyInfo.productNftId);
|
251
303
|
bundleNftId = policyInfo.bundleNftId;
|
252
|
-
bundleInfo =
|
253
|
-
require(bundleInfo.poolNftId ==
|
304
|
+
bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
305
|
+
require(bundleInfo.poolNftId == productSetupInfo.poolNftId, "POLICY_BUNDLE_MISMATCH");
|
254
306
|
|
255
307
|
// calculate required collateral
|
256
|
-
NftId poolNftId =
|
257
|
-
|
308
|
+
NftId poolNftId = productSetupInfo.poolNftId;
|
309
|
+
ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
258
310
|
|
259
311
|
// obtain remaining return values
|
260
312
|
collateralAmount = calculateRequiredCollateral(poolInfo.collateralizationLevel, policyInfo.sumInsuredAmount);
|
@@ -271,12 +323,13 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
271
323
|
returns (IBundle.BundleInfo memory)
|
272
324
|
{
|
273
325
|
bundleInfo.lockedAmount += collateralAmount;
|
274
|
-
|
326
|
+
// FIXME: this
|
327
|
+
// instance.collateralizePolicy(bundleNftId, policyNftId, collateralAmount);
|
275
328
|
return bundleInfo;
|
276
329
|
}
|
277
330
|
|
278
331
|
function _underwriteByPool(
|
279
|
-
|
332
|
+
NftId poolNftId,
|
280
333
|
NftId policyNftId,
|
281
334
|
IPolicy.PolicyInfo memory policyInfo,
|
282
335
|
bytes memory bundleFilter,
|
@@ -284,7 +337,7 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
284
337
|
)
|
285
338
|
internal
|
286
339
|
{
|
287
|
-
address poolAddress = getRegistry().getObjectInfo(
|
340
|
+
address poolAddress = getRegistry().getObjectInfo(poolNftId).objectAddress;
|
288
341
|
IPoolComponent pool = IPoolComponent(poolAddress);
|
289
342
|
pool.underwrite(
|
290
343
|
policyNftId,
|
@@ -317,27 +370,31 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
317
370
|
IRegistry.ObjectInfo memory productInfo,
|
318
371
|
IInstance instance
|
319
372
|
) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
373
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
320
374
|
|
321
375
|
// check match between policy and calling product
|
322
376
|
NftId productNftId = productInfo.nftId;
|
323
|
-
IPolicy.PolicyInfo memory policyInfo =
|
377
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
324
378
|
require(policyInfo.productNftId == productNftId, "POLICY_PRODUCT_MISMATCH");
|
325
|
-
require(
|
379
|
+
require(instanceReader.getPolicyState(policyNftId) == APPLIED(), "ERROR:PRS-021:STATE_NOT_APPLIED");
|
326
380
|
|
327
|
-
ITreasury.TreasuryInfo memory treasuryInfo;
|
328
381
|
NftId bundleNftId;
|
329
382
|
IBundle.BundleInfo memory bundleInfo;
|
330
383
|
uint256 collateralAmount;
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
384
|
+
{
|
385
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
386
|
+
|
387
|
+
(
|
388
|
+
bundleNftId,
|
389
|
+
bundleInfo,
|
390
|
+
collateralAmount
|
391
|
+
) = _getAndVerifyUnderwritingSetup(
|
392
|
+
instance,
|
393
|
+
instanceReader,
|
394
|
+
policyInfo,
|
395
|
+
productSetupInfo
|
396
|
+
);
|
397
|
+
}
|
341
398
|
|
342
399
|
// lock bundle collateral
|
343
400
|
bundleInfo = _lockCollateralInBundle(
|
@@ -346,16 +403,13 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
346
403
|
bundleInfo,
|
347
404
|
policyNftId,
|
348
405
|
collateralAmount);
|
349
|
-
|
350
|
-
|
351
|
-
instance.updatePolicyState(policyNftId, UNDERWRITTEN());
|
352
|
-
|
406
|
+
StateId newPolicyState = UNDERWRITTEN();
|
407
|
+
|
353
408
|
// optional activation of policy
|
354
409
|
if(activateAt > zeroTimestamp()) {
|
410
|
+
newPolicyState = ACTIVE();
|
355
411
|
policyInfo.activatedAt = activateAt;
|
356
412
|
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
357
|
-
|
358
|
-
instance.updatePolicyState(policyNftId, ACTIVE());
|
359
413
|
}
|
360
414
|
|
361
415
|
// optional collection of premium
|
@@ -363,7 +417,6 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
363
417
|
uint256 netPremiumAmount = _processPremiumByTreasury(
|
364
418
|
instance,
|
365
419
|
productInfo.nftId,
|
366
|
-
treasuryInfo,
|
367
420
|
policyNftId,
|
368
421
|
policyInfo.premiumAmount);
|
369
422
|
|
@@ -371,17 +424,18 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
371
424
|
bundleInfo.balanceAmount += netPremiumAmount;
|
372
425
|
}
|
373
426
|
|
374
|
-
instance.
|
375
|
-
|
427
|
+
instance.updatePolicy(policyNftId, policyInfo, newPolicyState);
|
428
|
+
_poolService.updateBundle(productInfo.parentNftId, bundleNftId, bundleInfo, KEEP_STATE());
|
376
429
|
|
377
430
|
// involve pool if necessary
|
378
431
|
{
|
379
|
-
NftId poolNftId =
|
380
|
-
|
432
|
+
NftId poolNftId = bundleInfo.poolNftId;
|
433
|
+
ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
381
434
|
|
382
|
-
|
435
|
+
// FIXME: use poolInfo.isVerifying ???
|
436
|
+
if(poolInfo.isIntercepting) {
|
383
437
|
_underwriteByPool(
|
384
|
-
|
438
|
+
poolNftId,
|
385
439
|
policyNftId,
|
386
440
|
policyInfo,
|
387
441
|
bundleInfo.filter,
|
@@ -404,28 +458,29 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
404
458
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
405
459
|
|
406
460
|
// perform actual token transfers
|
407
|
-
|
408
|
-
|
461
|
+
// FIXME: this
|
462
|
+
// IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
|
463
|
+
// ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(productInfo.nftId);
|
409
464
|
|
410
|
-
uint256 premiumAmount = policyInfo.premiumAmount;
|
411
|
-
_processPremiumByTreasury(instance, productInfo.nftId, treasuryInfo, policyNftId, premiumAmount);
|
465
|
+
// uint256 premiumAmount = policyInfo.premiumAmount;
|
466
|
+
// _processPremiumByTreasury(instance, productInfo.nftId, treasuryInfo, policyNftId, premiumAmount);
|
412
467
|
|
413
|
-
// policy level book keeping for premium paid
|
414
|
-
policyInfo.premiumPaidAmount += premiumAmount;
|
468
|
+
// // policy level book keeping for premium paid
|
469
|
+
// policyInfo.premiumPaidAmount += premiumAmount;
|
415
470
|
|
416
|
-
// optional activation of policy
|
417
|
-
if(activateAt > zeroTimestamp()) {
|
418
|
-
|
419
|
-
|
420
|
-
|
471
|
+
// // optional activation of policy
|
472
|
+
// if(activateAt > zeroTimestamp()) {
|
473
|
+
// require(
|
474
|
+
// policyInfo.activatedAt.eqz(),
|
475
|
+
// "ERROR:PRS-030:ALREADY_ACTIVATED");
|
421
476
|
|
422
|
-
|
423
|
-
|
477
|
+
// policyInfo.activatedAt = activateAt;
|
478
|
+
// policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
424
479
|
|
425
|
-
|
426
|
-
}
|
480
|
+
// instance.updatePolicyState(policyNftId, ACTIVE());
|
481
|
+
// }
|
427
482
|
|
428
|
-
instance.setPolicyInfo(policyNftId, policyInfo);
|
483
|
+
// instance.setPolicyInfo(policyNftId, policyInfo);
|
429
484
|
|
430
485
|
// TODO add logging
|
431
486
|
}
|
@@ -433,8 +488,9 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
433
488
|
function activate(NftId policyNftId, Timestamp activateAt) external override {
|
434
489
|
// check caller is registered product
|
435
490
|
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
491
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
436
492
|
|
437
|
-
IPolicy.PolicyInfo memory policyInfo =
|
493
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
438
494
|
|
439
495
|
require(
|
440
496
|
policyInfo.activatedAt.eqz(),
|
@@ -443,8 +499,7 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
443
499
|
policyInfo.activatedAt = activateAt;
|
444
500
|
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
445
501
|
|
446
|
-
instance.
|
447
|
-
instance.updatePolicyState(policyNftId, ACTIVE());
|
502
|
+
instance.updatePolicy(policyNftId, policyInfo, ACTIVE());
|
448
503
|
|
449
504
|
// TODO add logging
|
450
505
|
}
|
@@ -464,14 +519,15 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
464
519
|
view
|
465
520
|
returns (NftId poolNftid)
|
466
521
|
{
|
467
|
-
|
522
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
523
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
524
|
+
return productSetupInfo.poolNftId;
|
468
525
|
}
|
469
526
|
|
470
527
|
|
471
528
|
function _processPremiumByTreasury(
|
472
529
|
IInstance instance,
|
473
530
|
NftId productNftId,
|
474
|
-
ITreasury.TreasuryInfo memory treasuryInfo,
|
475
531
|
NftId policyNftId,
|
476
532
|
uint256 premiumAmount
|
477
533
|
)
|
@@ -480,11 +536,13 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
480
536
|
{
|
481
537
|
// process token transfer(s)
|
482
538
|
if(premiumAmount > 0) {
|
483
|
-
|
539
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instance.getInstanceReader().getProductSetupInfo(productNftId);
|
540
|
+
TokenHandler tokenHandler = productSetupInfo.tokenHandler;
|
484
541
|
address policyOwner = getRegistry().ownerOf(policyNftId);
|
485
|
-
|
542
|
+
ISetup.PoolSetupInfo memory poolSetupInfo = instance.getInstanceReader().getPoolSetupInfo(productSetupInfo.poolNftId);
|
543
|
+
address poolWallet = poolSetupInfo.wallet;
|
486
544
|
netPremiumAmount = premiumAmount;
|
487
|
-
Fee memory productFee =
|
545
|
+
Fee memory productFee = productSetupInfo.productFee;
|
488
546
|
|
489
547
|
if (FeeLib.feeIsZero(productFee)) {
|
490
548
|
tokenHandler.transfer(
|
@@ -493,13 +551,12 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
493
551
|
premiumAmount
|
494
552
|
);
|
495
553
|
} else {
|
496
|
-
(uint256
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
tokenHandler.transfer(policyOwner, productWallet, feeAmount);
|
554
|
+
(uint256 productFeeAmount, uint256 netAmount) = FeeLib.calculateFee(productSetupInfo.productFee, netPremiumAmount);
|
555
|
+
address productWallet = productSetupInfo.wallet;
|
556
|
+
if (tokenHandler.getToken().allowance(policyOwner, address(tokenHandler)) < premiumAmount) {
|
557
|
+
revert ErrorIProductServiceInsufficientAllowance(policyOwner, address(tokenHandler), premiumAmount);
|
558
|
+
}
|
559
|
+
tokenHandler.transfer(policyOwner, productWallet, productFeeAmount);
|
503
560
|
tokenHandler.transfer(policyOwner, poolWallet, netAmount);
|
504
561
|
netPremiumAmount = netAmount;
|
505
562
|
}
|
@@ -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
|
+
}
|
@@ -10,10 +10,22 @@ import {VersionPart} from "../types/Version.sol";
|
|
10
10
|
|
11
11
|
interface IRegistry is IERC165 {
|
12
12
|
|
13
|
+
event LogInitialMajorVersionSet(VersionPart majorVersion);
|
14
|
+
event LogMajorVersionSet(VersionPart majorVersionMax);
|
13
15
|
event LogRegistration(ObjectInfo info);
|
14
|
-
|
15
16
|
event LogServiceNameRegistration(string serviceName, VersionPart majorVersion);
|
16
17
|
|
18
|
+
// setMajorVersion()
|
19
|
+
error NotOwner(address account);
|
20
|
+
error MajorVersionMaxIncreaseInvalid(VersionPart newMajorVersionMax, VersionPart existingMaxMajorVersion);
|
21
|
+
|
22
|
+
// register()
|
23
|
+
error NotRegistryService();
|
24
|
+
error ZeroParentAddress();
|
25
|
+
error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
|
26
|
+
error ContractAlreadyRegistered(address objectAddress);
|
27
|
+
error InvalidServiceVersion(VersionPart majorVersion);
|
28
|
+
error ServiceNameAlreadyRegistered(string name, VersionPart majorVersion);
|
17
29
|
|
18
30
|
struct ObjectInfo {
|
19
31
|
NftId nftId;
|
@@ -24,12 +36,22 @@ interface IRegistry is IERC165 {
|
|
24
36
|
address initialOwner;
|
25
37
|
bytes data;
|
26
38
|
}// TODO delete nftId and initialOwner(if not used) from struct
|
39
|
+
// TODO strong disagree, keep nftId there (lets keep get object info return object consistent)
|
40
|
+
|
41
|
+
function setMajorVersion(VersionPart newMajorVersionMax) external;
|
27
42
|
|
28
43
|
function register(ObjectInfo memory info) external returns (NftId nftId);
|
29
|
-
|
44
|
+
|
45
|
+
function getMajorVersionMin() external view returns (VersionPart);
|
46
|
+
|
47
|
+
function getMajorVersionMax() external view returns (VersionPart);
|
48
|
+
|
49
|
+
function getMajorVersion() external view returns (VersionPart);
|
30
50
|
|
31
51
|
function getObjectCount() external view returns (uint256);
|
32
52
|
|
53
|
+
function getNftId() external view returns (NftId nftId);
|
54
|
+
|
33
55
|
function getNftId(address objectAddress) external view returns (NftId nftId);
|
34
56
|
|
35
57
|
function ownerOf(NftId nftId) external view returns (address);
|
@@ -44,6 +66,8 @@ interface IRegistry is IERC165 {
|
|
44
66
|
|
45
67
|
function isRegistered(address contractAddress) external view returns (bool);
|
46
68
|
|
69
|
+
function isRegisteredService(address contractAddress) external view returns (bool);
|
70
|
+
|
47
71
|
function getServiceName(NftId nftId) external view returns (string memory name);
|
48
72
|
|
49
73
|
function getServiceAddress(
|