@etherisc/gif-next 0.0.2-e875d61-189 → 0.0.2-e9148e0-933
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 +179 -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 +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +618 -0
- 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 +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +74 -181
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +55 -177
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +397 -70
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +444 -73
- 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 +462 -1400
- 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 +2412 -1075
- 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 +1388 -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 +276 -36
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +33 -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 +4 -4
- 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/{access/IAccess.sol/IAccess.json → IDistribution.sol/IDistribution.json} +2 -2
- 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 +381 -77
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +716 -0
- 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 +177 -75
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ServiceBase.sol/ServiceBase.json → service/IDistributionService.sol/IDistributionService.json} +204 -58
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +235 -50
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +325 -51
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +421 -53
- 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 +479 -94
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +448 -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 +466 -129
- 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/shared/INftOwnable.sol/INftOwnable.json +127 -0
- 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 +175 -54
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
- 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} +188 -90
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/shared/Service.sol/Service.json +468 -0
- 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/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
- 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 +283 -62
- 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 +103 -23
- 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 +52 -13
- 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 +4 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
- 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 +40 -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 +159 -0
- package/contracts/components/IBaseComponent.sol +9 -3
- package/contracts/components/IDistributionComponent.sol +44 -0
- package/contracts/components/IPoolComponent.sol +14 -9
- package/contracts/components/IProductComponent.sol +25 -9
- package/contracts/components/Pool.sol +89 -38
- package/contracts/components/Product.sol +196 -46
- 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 +34 -43
- package/contracts/instance/IInstanceService.sol +30 -0
- package/contracts/instance/Instance.sol +427 -55
- package/contracts/instance/InstanceAccessManager.sol +288 -0
- package/contracts/instance/InstanceReader.sol +306 -0
- package/contracts/instance/InstanceService.sol +192 -0
- package/contracts/instance/InstanceServiceManager.sol +57 -0
- package/contracts/instance/base/ComponentServiceBase.sol +92 -10
- package/contracts/instance/base/IInstanceBase.sol +6 -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 +11 -3
- 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 +238 -76
- package/contracts/instance/service/DistributionService.sol +88 -0
- package/contracts/instance/service/DistributionServiceManager.sol +54 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -3
- package/contracts/instance/service/IDistributionService.sol +12 -0
- package/contracts/instance/service/IPoolService.sol +8 -1
- package/contracts/instance/service/IProductService.sol +56 -7
- package/contracts/instance/service/PoolService.sol +117 -52
- package/contracts/instance/service/PoolServiceManager.sol +54 -0
- package/contracts/instance/service/ProductService.sol +351 -169
- 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 +333 -270
- 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 +55 -11
- 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 +113 -55
- 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 +10 -5
- package/contracts/types/Key32.sol +8 -3
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +40 -11
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +62 -10
- 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 +13 -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/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 -265
- 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 -265
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -136
- 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 -136
- 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 -273
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -273
- 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 -10
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
- 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 -531
- 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 -531
- 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/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -455
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -436
- 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 -84
- package/contracts/instance/base/ModuleBase.sol +0 -46
- 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 -135
- package/contracts/instance/module/bundle/IBundle.sol +0 -51
- package/contracts/instance/module/compensation/CompensationModule.sol +0 -17
- package/contracts/instance/module/compensation/ICompensation.sol +0 -10
- package/contracts/instance/module/component/ComponentModule.sol +0 -81
- package/contracts/instance/module/component/IComponent.sol +0 -29
- package/contracts/instance/module/policy/IPolicy.sol +0 -59
- package/contracts/instance/module/policy/PolicyModule.sol +0 -89
- 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 -10
- package/contracts/instance/module/risk/RiskModule.sol +0 -17
- package/contracts/instance/module/treasury/ITreasury.sol +0 -96
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -171
- package/contracts/registry/IChainNft.sol +0 -21
- package/contracts/registry/IRegistryLinked.sol +0 -8
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/test/TestPool.sol +0 -24
- package/contracts/test/TestProduct.sol +0 -51
@@ -2,28 +2,42 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
|
+
import {IProductComponent} from "../../components/IProductComponent.sol";
|
6
|
+
import {Product} from "../../components/Product.sol";
|
5
7
|
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
6
|
-
import {
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import {
|
8
|
+
import {IDistributionComponent} from "../../components/IDistributionComponent.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";
|
10
13
|
import {IProductService} from "./IProductService.sol";
|
11
|
-
import {ITreasury
|
14
|
+
import {ITreasury} from "../module/ITreasury.sol";
|
15
|
+
import {ISetup} from "../module/ISetup.sol";
|
16
|
+
|
17
|
+
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
12
18
|
|
13
19
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
14
20
|
import {Versionable} from "../../shared/Versionable.sol";
|
15
21
|
|
16
22
|
import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
17
|
-
import {UFixed,
|
18
|
-
import {ObjectType, INSTANCE, PRODUCT, POLICY} from "../../types/ObjectType.sol";
|
19
|
-
import {APPLIED, UNDERWRITTEN, ACTIVE} from "../../types/StateId.sol";
|
20
|
-
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
23
|
+
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
21
24
|
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
25
|
+
import {ObjectType, INSTANCE, PRODUCT, POLICY} from "../../types/ObjectType.sol";
|
26
|
+
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
|
27
|
+
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
22
28
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
29
|
+
import {ReferralId} from "../../types/Referral.sol";
|
30
|
+
import {RiskId} from "../../types/RiskId.sol";
|
31
|
+
import {StateId} from "../../types/StateId.sol";
|
23
32
|
import {Version, VersionLib} from "../../types/Version.sol";
|
24
33
|
|
34
|
+
import {IService} from "../../shared/IService.sol";
|
35
|
+
import {Service} from "../../shared/Service.sol";
|
25
36
|
import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
|
26
37
|
import {IProductService} from "./IProductService.sol";
|
38
|
+
import {InstanceReader} from "../InstanceReader.sol";
|
39
|
+
|
40
|
+
string constant PRODUCT_SERVICE_NAME = "ProductService";
|
27
41
|
|
28
42
|
// TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
|
29
43
|
contract ProductService is ComponentServiceBase, IProductService {
|
@@ -31,71 +45,222 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
31
45
|
|
32
46
|
string public constant NAME = "ProductService";
|
33
47
|
|
48
|
+
address internal _registryAddress;
|
49
|
+
|
34
50
|
event LogProductServiceSender(address sender);
|
35
51
|
|
36
|
-
|
37
|
-
address
|
38
|
-
|
39
|
-
)
|
52
|
+
function _initialize(
|
53
|
+
address owner,
|
54
|
+
bytes memory data
|
55
|
+
)
|
56
|
+
internal
|
57
|
+
initializer
|
58
|
+
virtual override
|
40
59
|
{
|
60
|
+
address initialOwner = address(0);
|
61
|
+
(_registryAddress, initialOwner) = abi.decode(data, (address, address));
|
62
|
+
|
63
|
+
_initializeService(_registryAddress, owner);
|
64
|
+
|
65
|
+
_registerInterface(type(IService).interfaceId);
|
41
66
|
_registerInterface(type(IProductService).interfaceId);
|
42
67
|
}
|
43
68
|
|
44
|
-
function getVersion()
|
45
|
-
public
|
46
|
-
pure
|
47
|
-
virtual override (IVersionable, Versionable)
|
48
|
-
returns(Version)
|
49
|
-
{
|
50
|
-
return VersionLib.toVersion(3,0,0);
|
51
|
-
}
|
52
69
|
|
53
|
-
function getName()
|
70
|
+
function getName() public pure override(IService, Service) returns(string memory name) {
|
54
71
|
return NAME;
|
55
72
|
}
|
56
73
|
|
74
|
+
function _finalizeComponentRegistration(NftId componentNftId, bytes memory initialObjData, IInstance instance) internal override {
|
75
|
+
ISetup.ProductSetupInfo memory initialSetup = abi.decode(
|
76
|
+
initialObjData,
|
77
|
+
(ISetup.ProductSetupInfo)
|
78
|
+
);
|
79
|
+
instance.createProductSetup(componentNftId, initialSetup);
|
80
|
+
}
|
81
|
+
|
57
82
|
function setFees(
|
58
|
-
Fee memory
|
83
|
+
Fee memory productFee,
|
59
84
|
Fee memory processingFee
|
60
85
|
)
|
61
86
|
external
|
62
87
|
override
|
63
88
|
{
|
64
89
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
90
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
65
91
|
NftId productNftId = productInfo.nftId;
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
92
|
+
|
93
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
94
|
+
productSetupInfo.productFee = productFee;
|
95
|
+
productSetupInfo.processingFee = processingFee;
|
96
|
+
|
97
|
+
instance.updateProductSetup(productNftId, productSetupInfo, KEEP_STATE());
|
98
|
+
}
|
99
|
+
|
100
|
+
// FIXME: this
|
101
|
+
function createRisk(
|
102
|
+
RiskId riskId,
|
103
|
+
bytes memory data
|
104
|
+
) external override {
|
105
|
+
// (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
106
|
+
// NftId productNftId = productInfo.nftId;
|
107
|
+
// instance.createRisk(
|
108
|
+
// riskId,
|
109
|
+
// productNftId,
|
110
|
+
// data
|
111
|
+
// );
|
112
|
+
}
|
113
|
+
|
114
|
+
// FIXME: this
|
115
|
+
function setRiskInfo(
|
116
|
+
RiskId riskId,
|
117
|
+
IRisk.RiskInfo memory info
|
118
|
+
) external {
|
119
|
+
// (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
120
|
+
// instance.setRiskInfo(
|
121
|
+
// riskId,
|
122
|
+
// info
|
123
|
+
// );
|
124
|
+
}
|
125
|
+
|
126
|
+
// FIXME: this
|
127
|
+
function updateRiskState(
|
128
|
+
RiskId riskId,
|
129
|
+
StateId state
|
130
|
+
) external {
|
131
|
+
// (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
132
|
+
// instance.updateRiskState(
|
133
|
+
// riskId,
|
134
|
+
// state
|
135
|
+
// );
|
70
136
|
}
|
71
137
|
|
138
|
+
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
139
|
+
IRegistry.ObjectInfo memory productInfo;
|
140
|
+
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
141
|
+
product = Product(productInfo.objectAddress);
|
142
|
+
}
|
143
|
+
|
144
|
+
function calculatePremium(
|
145
|
+
RiskId riskId,
|
146
|
+
uint256 sumInsuredAmount,
|
147
|
+
uint256 lifetime,
|
148
|
+
bytes memory applicationData,
|
149
|
+
NftId bundleNftId,
|
150
|
+
ReferralId referralId
|
151
|
+
)
|
152
|
+
public
|
153
|
+
view
|
154
|
+
override
|
155
|
+
returns (
|
156
|
+
uint256 premiumAmount,
|
157
|
+
uint256 productFeeAmount,
|
158
|
+
uint256 poolFeeAmount,
|
159
|
+
uint256 bundleFeeAmount,
|
160
|
+
uint256 distributionFeeAmount
|
161
|
+
)
|
162
|
+
{
|
163
|
+
Product product = _getAndVerifyInstanceAndProduct();
|
164
|
+
uint256 netPremiumAmount = product.calculateNetPremium(
|
165
|
+
sumInsuredAmount,
|
166
|
+
riskId,
|
167
|
+
lifetime,
|
168
|
+
applicationData
|
169
|
+
);
|
170
|
+
|
171
|
+
(
|
172
|
+
productFeeAmount,
|
173
|
+
poolFeeAmount,
|
174
|
+
bundleFeeAmount,
|
175
|
+
distributionFeeAmount
|
176
|
+
) = _calculateFeeAmounts(
|
177
|
+
netPremiumAmount,
|
178
|
+
product,
|
179
|
+
bundleNftId,
|
180
|
+
referralId
|
181
|
+
);
|
182
|
+
|
183
|
+
premiumAmount = netPremiumAmount + productFeeAmount;
|
184
|
+
premiumAmount += poolFeeAmount + bundleFeeAmount;
|
185
|
+
premiumAmount += distributionFeeAmount;
|
186
|
+
}
|
187
|
+
|
188
|
+
function _calculateFeeAmounts(
|
189
|
+
uint256 netPremiumAmount,
|
190
|
+
Product product,
|
191
|
+
NftId bundleNftId,
|
192
|
+
ReferralId referralId
|
193
|
+
)
|
194
|
+
internal
|
195
|
+
view
|
196
|
+
returns (
|
197
|
+
uint256 productFeeAmount,
|
198
|
+
uint256 poolFeeAmount,
|
199
|
+
uint256 bundleFeeAmount,
|
200
|
+
uint256 distributionFeeAmount
|
201
|
+
)
|
202
|
+
{
|
203
|
+
IInstance instance = product.getInstance();
|
204
|
+
// FIXME: this
|
205
|
+
// ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(product.getNftId());
|
206
|
+
// IBundle.BundleInfo memory bundleInfo = instance.getBundleInfo(bundleNftId);
|
207
|
+
// require(bundleInfo.poolNftId == treasuryInfo.poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
|
208
|
+
|
209
|
+
// (productFeeAmount,) = FeeLib.calculateFee(treasuryInfo.productFee, netPremiumAmount);
|
210
|
+
// (poolFeeAmount,) = FeeLib.calculateFee(treasuryInfo.poolFee, netPremiumAmount);
|
211
|
+
// (bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
|
212
|
+
|
213
|
+
// IRegistry.ObjectInfo memory distributionInfo = getRegistry().getObjectInfo(treasuryInfo.distributionNftId);
|
214
|
+
// IDistributionComponent distribution = IDistributionComponent(distributionInfo.objectAddress);
|
215
|
+
// distributionFeeAmount = distribution.calculateFeeAmount(referralId, netPremiumAmount);
|
216
|
+
}
|
217
|
+
|
218
|
+
|
72
219
|
function createApplication(
|
73
220
|
address applicationOwner,
|
221
|
+
RiskId riskId,
|
74
222
|
uint256 sumInsuredAmount,
|
75
|
-
uint256 premiumAmount,
|
76
223
|
uint256 lifetime,
|
77
|
-
|
224
|
+
bytes memory applicationData,
|
225
|
+
NftId bundleNftId,
|
226
|
+
ReferralId referralId
|
78
227
|
) external override returns (NftId policyNftId) {
|
79
228
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
80
|
-
NftId productNftId = productInfo.nftId;
|
81
229
|
// TODO add validations (see create bundle in pool service)
|
82
230
|
|
83
|
-
policyNftId =
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
231
|
+
policyNftId = getRegistryService().registerPolicy(
|
232
|
+
IRegistry.ObjectInfo(
|
233
|
+
zeroNftId(),
|
234
|
+
productInfo.nftId,
|
235
|
+
POLICY(),
|
236
|
+
false, // intercepting property for policies is defined on product
|
237
|
+
address(0),
|
238
|
+
applicationOwner,
|
239
|
+
""
|
240
|
+
)
|
88
241
|
);
|
89
242
|
|
90
|
-
|
91
|
-
|
92
|
-
productNftId,
|
243
|
+
(uint256 premiumAmount,,,,) = calculatePremium(
|
244
|
+
riskId,
|
93
245
|
sumInsuredAmount,
|
94
|
-
premiumAmount,
|
95
246
|
lifetime,
|
96
|
-
|
247
|
+
applicationData,
|
248
|
+
bundleNftId,
|
249
|
+
referralId
|
97
250
|
);
|
98
251
|
|
252
|
+
// FIXME: this
|
253
|
+
// instance.createPolicyInfo(
|
254
|
+
// policyNftId,
|
255
|
+
// productInfo.nftId,
|
256
|
+
// referralId,
|
257
|
+
// riskId,
|
258
|
+
// sumInsuredAmount,
|
259
|
+
// premiumAmount,
|
260
|
+
// lifetime,
|
261
|
+
// bundleNftId
|
262
|
+
// );
|
263
|
+
|
99
264
|
// TODO add logging
|
100
265
|
}
|
101
266
|
|
@@ -112,18 +277,19 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
112
277
|
uint256 collateralAmount
|
113
278
|
)
|
114
279
|
{
|
280
|
+
// FIXME: this
|
115
281
|
// check match between policy and bundle (via pool)
|
116
|
-
treasuryInfo = instance.getTreasuryInfo(policyInfo.productNftId);
|
117
|
-
bundleNftId = policyInfo.bundleNftId;
|
118
|
-
bundleInfo = instance.getBundleInfo(bundleNftId);
|
119
|
-
require(bundleInfo.poolNftId == treasuryInfo.poolNftId, "POLICY_BUNDLE_MISMATCH");
|
282
|
+
// treasuryInfo = instance.getTreasuryInfo(policyInfo.productNftId);
|
283
|
+
// bundleNftId = policyInfo.bundleNftId;
|
284
|
+
// bundleInfo = instance.getBundleInfo(bundleNftId);
|
285
|
+
// require(bundleInfo.poolNftId == treasuryInfo.poolNftId, "POLICY_BUNDLE_MISMATCH");
|
120
286
|
|
121
|
-
// calculate required collateral
|
122
|
-
NftId poolNftId = treasuryInfo.poolNftId;
|
123
|
-
|
287
|
+
// // calculate required collateral
|
288
|
+
// NftId poolNftId = treasuryInfo.poolNftId;
|
289
|
+
// ISetup.PoolSetupInfo memory poolInfo = instance.getPoolInfo(poolNftId);
|
124
290
|
|
125
|
-
// obtain remaining return values
|
126
|
-
collateralAmount = calculateRequiredCollateral(poolInfo.collateralizationLevel, policyInfo.sumInsuredAmount);
|
291
|
+
// // obtain remaining return values
|
292
|
+
// collateralAmount = calculateRequiredCollateral(poolInfo.collateralizationLevel, policyInfo.sumInsuredAmount);
|
127
293
|
}
|
128
294
|
|
129
295
|
function _lockCollateralInBundle(
|
@@ -137,7 +303,8 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
137
303
|
returns (IBundle.BundleInfo memory)
|
138
304
|
{
|
139
305
|
bundleInfo.lockedAmount += collateralAmount;
|
140
|
-
|
306
|
+
// FIXME: this
|
307
|
+
// instance.collateralizePolicy(bundleNftId, policyNftId, collateralAmount);
|
141
308
|
return bundleInfo;
|
142
309
|
}
|
143
310
|
|
@@ -150,7 +317,7 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
150
317
|
)
|
151
318
|
internal
|
152
319
|
{
|
153
|
-
address poolAddress =
|
320
|
+
address poolAddress = getRegistry().getObjectInfo(treasuryInfo.poolNftId).objectAddress;
|
154
321
|
IPoolComponent pool = IPoolComponent(poolAddress);
|
155
322
|
pool.underwrite(
|
156
323
|
policyNftId,
|
@@ -160,6 +327,16 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
160
327
|
}
|
161
328
|
|
162
329
|
|
330
|
+
function revoke(
|
331
|
+
NftId policyNftId
|
332
|
+
)
|
333
|
+
external
|
334
|
+
override
|
335
|
+
{
|
336
|
+
require(false, "ERROR:PRS-234:NOT_YET_IMPLEMENTED");
|
337
|
+
}
|
338
|
+
|
339
|
+
|
163
340
|
function underwrite(
|
164
341
|
NftId policyNftId,
|
165
342
|
bool requirePremiumPayment,
|
@@ -176,81 +353,82 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
176
353
|
|
177
354
|
// check match between policy and calling product
|
178
355
|
NftId productNftId = productInfo.nftId;
|
179
|
-
|
180
|
-
|
181
|
-
require(
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
instance.
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
}
|
356
|
+
// FIXME: this
|
357
|
+
// IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
|
358
|
+
// require(policyInfo.productNftId == productNftId, "POLICY_PRODUCT_MISMATCH");
|
359
|
+
// require(instance.getState(policyNftId.toKey32(POLICY())) == APPLIED(), "ERROR:PRS-021:STATE_NOT_APPLIED");
|
360
|
+
|
361
|
+
// ITreasury.TreasuryInfo memory treasuryInfo;
|
362
|
+
// NftId bundleNftId;
|
363
|
+
// IBundle.BundleInfo memory bundleInfo;
|
364
|
+
// uint256 collateralAmount;
|
365
|
+
|
366
|
+
// (
|
367
|
+
// treasuryInfo,
|
368
|
+
// bundleNftId,
|
369
|
+
// bundleInfo,
|
370
|
+
// collateralAmount
|
371
|
+
// ) = _getAndVerifyUnderwritingSetup(
|
372
|
+
// instance,
|
373
|
+
// policyInfo
|
374
|
+
// );
|
375
|
+
|
376
|
+
// // lock bundle collateral
|
377
|
+
// bundleInfo = _lockCollateralInBundle(
|
378
|
+
// instance,
|
379
|
+
// bundleNftId,
|
380
|
+
// bundleInfo,
|
381
|
+
// policyNftId,
|
382
|
+
// collateralAmount);
|
383
|
+
|
384
|
+
// // set policy state to underwritten
|
385
|
+
// instance.updatePolicyState(policyNftId, UNDERWRITTEN());
|
386
|
+
|
387
|
+
// // optional activation of policy
|
388
|
+
// if(activateAt > zeroTimestamp()) {
|
389
|
+
// policyInfo.activatedAt = activateAt;
|
390
|
+
// policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
391
|
+
|
392
|
+
// instance.updatePolicyState(policyNftId, ACTIVE());
|
393
|
+
// }
|
394
|
+
|
395
|
+
// // optional collection of premium
|
396
|
+
// if(requirePremiumPayment) {
|
397
|
+
// uint256 netPremiumAmount = _processPremiumByTreasury(
|
398
|
+
// instance,
|
399
|
+
// productInfo.nftId,
|
400
|
+
// treasuryInfo,
|
401
|
+
// policyNftId,
|
402
|
+
// policyInfo.premiumAmount);
|
403
|
+
|
404
|
+
// policyInfo.premiumPaidAmount += policyInfo.premiumAmount;
|
405
|
+
// bundleInfo.balanceAmount += netPremiumAmount;
|
406
|
+
// }
|
407
|
+
|
408
|
+
// instance.setPolicyInfo(policyNftId, policyInfo);
|
409
|
+
// instance.setBundleInfo(bundleNftId, bundleInfo);
|
410
|
+
|
411
|
+
// // involve pool if necessary
|
412
|
+
// {
|
413
|
+
// NftId poolNftId = treasuryInfo.poolNftId;
|
414
|
+
// ISetup.PoolSetupInfo memory poolInfo = instance.getPoolInfo(poolNftId);
|
415
|
+
|
416
|
+
// if(poolInfo.isVerifying) {
|
417
|
+
// _underwriteByPool(
|
418
|
+
// treasuryInfo,
|
419
|
+
// policyNftId,
|
420
|
+
// policyInfo,
|
421
|
+
// bundleInfo.filter,
|
422
|
+
// collateralAmount
|
423
|
+
// );
|
424
|
+
// }
|
425
|
+
// }
|
248
426
|
|
249
427
|
// TODO add logging
|
250
428
|
}
|
251
429
|
|
252
430
|
function calculateRequiredCollateral(UFixed collateralizationLevel, uint256 sumInsuredAmount) public pure override returns(uint256 collateralAmount) {
|
253
|
-
UFixed sumInsuredUFixed =
|
431
|
+
UFixed sumInsuredUFixed = UFixedLib.toUFixed(sumInsuredAmount);
|
254
432
|
UFixed collateralUFixed = collateralizationLevel * sumInsuredUFixed;
|
255
433
|
return collateralUFixed.toInt();
|
256
434
|
}
|
@@ -260,47 +438,49 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
260
438
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
261
439
|
|
262
440
|
// perform actual token transfers
|
263
|
-
|
264
|
-
|
441
|
+
// FIXME: this
|
442
|
+
// IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
|
443
|
+
// ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(productInfo.nftId);
|
265
444
|
|
266
|
-
uint256 premiumAmount = policyInfo.premiumAmount;
|
267
|
-
_processPremiumByTreasury(instance, productInfo.nftId, treasuryInfo, policyNftId, premiumAmount);
|
445
|
+
// uint256 premiumAmount = policyInfo.premiumAmount;
|
446
|
+
// _processPremiumByTreasury(instance, productInfo.nftId, treasuryInfo, policyNftId, premiumAmount);
|
268
447
|
|
269
|
-
// policy level book keeping for premium paid
|
270
|
-
policyInfo.premiumPaidAmount += premiumAmount;
|
448
|
+
// // policy level book keeping for premium paid
|
449
|
+
// policyInfo.premiumPaidAmount += premiumAmount;
|
271
450
|
|
272
|
-
// optional activation of policy
|
273
|
-
if(activateAt > zeroTimestamp()) {
|
274
|
-
|
275
|
-
|
276
|
-
|
451
|
+
// // optional activation of policy
|
452
|
+
// if(activateAt > zeroTimestamp()) {
|
453
|
+
// require(
|
454
|
+
// policyInfo.activatedAt.eqz(),
|
455
|
+
// "ERROR:PRS-030:ALREADY_ACTIVATED");
|
277
456
|
|
278
|
-
|
279
|
-
|
457
|
+
// policyInfo.activatedAt = activateAt;
|
458
|
+
// policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
280
459
|
|
281
|
-
|
282
|
-
}
|
460
|
+
// instance.updatePolicyState(policyNftId, ACTIVE());
|
461
|
+
// }
|
283
462
|
|
284
|
-
instance.setPolicyInfo(policyNftId, policyInfo);
|
463
|
+
// instance.setPolicyInfo(policyNftId, policyInfo);
|
285
464
|
|
286
465
|
// TODO add logging
|
287
466
|
}
|
288
467
|
|
468
|
+
// FIXME: this
|
289
469
|
function activate(NftId policyNftId, Timestamp activateAt) external override {
|
290
470
|
// check caller is registered product
|
291
471
|
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
292
472
|
|
293
|
-
IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
|
473
|
+
// IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
|
294
474
|
|
295
|
-
require(
|
296
|
-
|
297
|
-
|
475
|
+
// require(
|
476
|
+
// policyInfo.activatedAt.eqz(),
|
477
|
+
// "ERROR:PRS-020:ALREADY_ACTIVATED");
|
298
478
|
|
299
|
-
policyInfo.activatedAt = activateAt;
|
300
|
-
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
479
|
+
// policyInfo.activatedAt = activateAt;
|
480
|
+
// policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
301
481
|
|
302
|
-
instance.setPolicyInfo(policyNftId, policyInfo);
|
303
|
-
instance.updatePolicyState(policyNftId, ACTIVE());
|
482
|
+
// instance.setPolicyInfo(policyNftId, policyInfo);
|
483
|
+
// instance.updatePolicyState(policyNftId, ACTIVE());
|
304
484
|
|
305
485
|
// TODO add logging
|
306
486
|
}
|
@@ -320,7 +500,8 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
320
500
|
view
|
321
501
|
returns (NftId poolNftid)
|
322
502
|
{
|
323
|
-
|
503
|
+
// FIXME: this
|
504
|
+
// return instance.getTreasuryInfo(productNftId).poolNftId;
|
324
505
|
}
|
325
506
|
|
326
507
|
|
@@ -336,29 +517,30 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
336
517
|
{
|
337
518
|
// process token transfer(s)
|
338
519
|
if(premiumAmount > 0) {
|
339
|
-
|
340
|
-
|
341
|
-
address
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
520
|
+
// FIXME: this
|
521
|
+
// TokenHandler tokenHandler = instance.getTokenHandler(productNftId);
|
522
|
+
// address policyOwner = getRegistry().ownerOf(policyNftId);
|
523
|
+
// address poolWallet = instance.getComponentWallet(treasuryInfo.poolNftId);
|
524
|
+
// netPremiumAmount = premiumAmount;
|
525
|
+
// Fee memory productFee = treasuryInfo.productFee;
|
526
|
+
|
527
|
+
// if (FeeLib.feeIsZero(productFee)) {
|
528
|
+
// tokenHandler.transfer(
|
529
|
+
// policyOwner,
|
530
|
+
// poolWallet,
|
531
|
+
// premiumAmount
|
532
|
+
// );
|
533
|
+
// } else {
|
534
|
+
// (uint256 feeAmount, uint256 netAmount) = instance.calculateFeeAmount(
|
535
|
+
// premiumAmount,
|
536
|
+
// productFee
|
537
|
+
// );
|
538
|
+
|
539
|
+
// address productWallet = instance.getComponentWallet(productNftId);
|
540
|
+
// tokenHandler.transfer(policyOwner, productWallet, feeAmount);
|
541
|
+
// tokenHandler.transfer(policyOwner, poolWallet, netAmount);
|
542
|
+
// netPremiumAmount = netAmount;
|
543
|
+
// }
|
362
544
|
}
|
363
545
|
|
364
546
|
// TODO add logging
|