@etherisc/gif-next 0.0.2-d911522 → 0.0.2-da06f3b-803
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 +364 -8
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +510 -33
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +849 -0
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/IComponent.sol/IComponent.json} +244 -241
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +648 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +713 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +748 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +752 -51
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +773 -55
- 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/Require.sol/Require.json +2 -2
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
- 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 +4 -0
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1558 -470
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +592 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2454 -462
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1081 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1381 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1050 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +473 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +603 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +228 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.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/ITreasury.sol/ITreasury.json +10 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1102 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +449 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +772 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +437 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +715 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +441 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +766 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +494 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +531 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1227 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +505 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +806 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +437 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +856 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +437 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +239 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +525 -61
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +981 -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 +572 -74
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1200 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +464 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +394 -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 +4 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
- 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 +4 -0
- package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/IRegisterable.sol/IRegisterable.json} +107 -73
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/shared/IService.sol/IService.json +416 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +205 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +171 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +362 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +282 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/shared/Service.sol/Service.json +476 -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 +4 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +228 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +313 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
- package/artifacts/contracts/test/TestService.sol/TestService.json +608 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +286 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
- 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 +4 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
- 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 +4 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
- 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 +4 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +77 -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/UFixedLib.json +479 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
- package/contracts/components/Component.sol +192 -38
- package/contracts/components/Distribution.sol +153 -0
- package/contracts/components/IComponent.sol +43 -0
- package/contracts/components/IDistributionComponent.sol +47 -0
- package/contracts/components/IPoolComponent.sol +51 -0
- package/contracts/components/IProductComponent.sol +39 -0
- package/contracts/components/Pool.sol +196 -17
- package/contracts/components/Product.sol +236 -36
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/experiment/errors/Require.sol +10 -5
- package/contracts/experiment/errors/Revert.sol +13 -8
- package/contracts/experiment/inheritance/A.sol +8 -11
- package/contracts/experiment/inheritance/B.sol +10 -5
- package/contracts/experiment/inheritance/C.sol +11 -5
- package/contracts/experiment/inheritance/IA.sol +2 -7
- package/contracts/experiment/inheritance/IB.sol +3 -2
- package/contracts/experiment/inheritance/IC.sol +4 -3
- package/contracts/experiment/statemachine/Dummy.sol +27 -0
- package/contracts/experiment/statemachine/ISM.sol +25 -0
- package/contracts/experiment/statemachine/SM.sol +57 -0
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
- package/contracts/experiment/types/TypeA.sol +14 -9
- package/contracts/experiment/types/TypeB.sol +14 -9
- package/contracts/instance/BundleManager.sol +125 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +67 -15
- package/contracts/instance/IInstanceService.sol +42 -0
- package/contracts/instance/Instance.sol +248 -43
- package/contracts/instance/InstanceAccessManager.sol +414 -0
- package/contracts/instance/InstanceReader.sol +293 -0
- package/contracts/instance/InstanceService.sol +473 -0
- package/contracts/instance/InstanceServiceManager.sol +54 -0
- package/contracts/instance/ObjectManager.sol +84 -0
- package/contracts/instance/base/ComponentService.sol +134 -0
- package/contracts/instance/base/IKeyValueStore.sol +49 -0
- package/contracts/instance/base/ILifecycle.sol +30 -0
- package/contracts/instance/base/KeyValueStore.sol +172 -0
- package/contracts/instance/base/Lifecycle.sol +100 -0
- package/contracts/instance/module/IAccess.sol +48 -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 +46 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/BundleService.sol +293 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/DistributionService.sol +106 -0
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IBundleService.sol +44 -0
- package/contracts/instance/service/IDistributionService.sol +12 -0
- package/contracts/instance/service/IPolicyService.sol +94 -0
- package/contracts/instance/service/IPoolService.sol +20 -0
- package/contracts/instance/service/IProductService.sol +40 -0
- package/contracts/instance/service/PolicyService.sol +538 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +110 -0
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +233 -0
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +138 -109
- package/contracts/registry/IRegistry.sol +79 -49
- package/contracts/registry/IRegistryService.sol +65 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +391 -116
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +262 -0
- package/contracts/registry/RegistryServiceManager.sol +62 -0
- package/contracts/registry/ReleaseManager.sol +332 -0
- package/contracts/registry/TokenRegistry.sol +112 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/ERC165.sol +25 -0
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +15 -0
- package/contracts/shared/IService.sol +16 -0
- package/contracts/shared/IVersionable.sol +96 -0
- package/contracts/shared/NftOwnable.sol +139 -0
- package/contracts/shared/ProxyManager.sol +94 -0
- package/contracts/shared/Registerable.sol +86 -0
- package/contracts/shared/Service.sol +60 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +147 -0
- package/contracts/test/TestFee.sol +25 -0
- package/contracts/test/TestRegisterable.sol +18 -0
- package/contracts/test/TestRoleId.sol +14 -0
- package/contracts/test/TestService.sol +25 -0
- package/contracts/test/TestToken.sol +26 -0
- package/contracts/test/TestVersion.sol +44 -0
- package/contracts/test/TestVersionable.sol +17 -0
- package/contracts/test/Usdc.sol +26 -0
- package/contracts/types/AddressSet.sol +58 -0
- package/contracts/types/Blocknumber.sol +76 -18
- package/contracts/types/ChainId.sol +18 -10
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +56 -0
- package/contracts/types/Key32.sol +50 -0
- package/contracts/types/NftId.sol +48 -11
- package/contracts/types/NftIdSet.sol +62 -0
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +152 -0
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +93 -0
- package/contracts/types/StateId.sol +105 -0
- package/contracts/types/Timestamp.sol +89 -17
- package/contracts/types/UFixed.sol +193 -75
- package/contracts/types/Version.sol +107 -0
- package/package.json +21 -6
- package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
- package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
- package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
- package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -440
- package/contracts/components/IPool.sol +0 -9
- package/contracts/components/IProduct.sol +0 -12
- package/contracts/instance/access/Access.sol +0 -218
- package/contracts/instance/access/IAccess.sol +0 -83
- package/contracts/instance/component/ComponentModule.sol +0 -248
- package/contracts/instance/component/IComponent.sol +0 -95
- package/contracts/instance/policy/IPolicy.sol +0 -66
- package/contracts/instance/policy/PolicyModule.sol +0 -107
- package/contracts/instance/pool/IPoolModule.sol +0 -41
- package/contracts/instance/pool/PoolModule.sol +0 -86
- package/contracts/instance/product/IProductService.sol +0 -46
- package/contracts/instance/product/ProductService.sol +0 -108
- package/contracts/registry/IChainNft.sol +0 -18
@@ -0,0 +1,47 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Fee} from "../types/Fee.sol";
|
5
|
+
import {IComponent} from "./IComponent.sol";
|
6
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
7
|
+
import {ReferralId} from "../types/Referral.sol";
|
8
|
+
import {NftId} from "../types/NftId.sol";
|
9
|
+
|
10
|
+
interface IDistributionComponent is IComponent {
|
11
|
+
|
12
|
+
function getSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
|
13
|
+
|
14
|
+
function setFees(
|
15
|
+
Fee memory distributionFee
|
16
|
+
) external;
|
17
|
+
|
18
|
+
function calculateFeeAmount(
|
19
|
+
ReferralId referralId,
|
20
|
+
uint256 netPremiumAmount
|
21
|
+
) external view returns (uint256 feeAmount);
|
22
|
+
|
23
|
+
function calculateRenewalFeeAmount(
|
24
|
+
ReferralId referralId,
|
25
|
+
uint256 netPremiumAmount
|
26
|
+
) external view returns (uint256 feeAmount);
|
27
|
+
|
28
|
+
/// @dev callback from product service when selling a policy for a specific referralId
|
29
|
+
/// the used referral id and the collected fee are provided as parameters
|
30
|
+
/// the component implementation can then process this information accordingly
|
31
|
+
function processSale(
|
32
|
+
ReferralId referralId,
|
33
|
+
uint256 feeAmount
|
34
|
+
) external;
|
35
|
+
|
36
|
+
/// @dev callback from product service when a policy is renews for a specific referralId
|
37
|
+
function processRenewal(
|
38
|
+
ReferralId referralId,
|
39
|
+
uint256 feeAmount
|
40
|
+
) external;
|
41
|
+
|
42
|
+
/// @dev returns true iff the referral id is valid
|
43
|
+
function referralIsValid(ReferralId referralId) external view returns (bool isValid);
|
44
|
+
|
45
|
+
/// @dev returns true iff the component needs to be called when selling/renewing policis
|
46
|
+
function isVerifying() external view returns (bool verifying);
|
47
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Fee} from "../types/Fee.sol";
|
5
|
+
import {IComponent} from "./IComponent.sol";
|
6
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
7
|
+
import {NftId} from "../types/NftId.sol";
|
8
|
+
import {UFixed} from "../types/UFixed.sol";
|
9
|
+
|
10
|
+
interface IPoolComponent is IComponent {
|
11
|
+
|
12
|
+
event LogUnderwrittenByPool(NftId policyNftId, uint256 collateralizationAmount, address pool);
|
13
|
+
|
14
|
+
function getSetupInfo() external view returns (ISetup.PoolSetupInfo memory setupInfo);
|
15
|
+
|
16
|
+
function setFees(
|
17
|
+
Fee memory poolFee,
|
18
|
+
Fee memory stakingFee,
|
19
|
+
Fee memory performanceFee
|
20
|
+
) external;
|
21
|
+
|
22
|
+
/**
|
23
|
+
* @dev this is a callback function that is called by the product service when underwriting a policy.
|
24
|
+
* the pool has the option to check the details and object to underwriting by reverting.
|
25
|
+
* the function is only called for "active" pools that ask to be involved/notified
|
26
|
+
* by product related state changes.
|
27
|
+
*/
|
28
|
+
function underwrite(
|
29
|
+
NftId policyNftId,
|
30
|
+
bytes memory policyData,
|
31
|
+
bytes memory bundleFilter,
|
32
|
+
uint256 collateralizationAmount
|
33
|
+
) external;
|
34
|
+
|
35
|
+
/**
|
36
|
+
* @dev returns true iff the policy application data in policyData matches
|
37
|
+
* with the bundle filter criteria encoded in bundleFilter.
|
38
|
+
*/
|
39
|
+
function policyMatchesBundle(
|
40
|
+
bytes memory policyData,
|
41
|
+
bytes memory bundleFilter
|
42
|
+
)
|
43
|
+
external
|
44
|
+
view
|
45
|
+
returns (bool isMatching);
|
46
|
+
|
47
|
+
function isConfirmingApplication() external view returns (bool isConfirmingApplication);
|
48
|
+
|
49
|
+
function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
|
50
|
+
|
51
|
+
}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Fee} from "../types/Fee.sol";
|
5
|
+
import {IComponent} from "./IComponent.sol";
|
6
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
7
|
+
import {NftId} from "../types/NftId.sol";
|
8
|
+
import {ReferralId} from "../types/Referral.sol";
|
9
|
+
import {RiskId} from "../types/RiskId.sol";
|
10
|
+
|
11
|
+
interface IProductComponent is IComponent {
|
12
|
+
|
13
|
+
function getSetupInfo() external view returns (ISetup.ProductSetupInfo memory setupInfo);
|
14
|
+
|
15
|
+
function setFees(
|
16
|
+
Fee memory productFee,
|
17
|
+
Fee memory processingFee
|
18
|
+
) external;
|
19
|
+
|
20
|
+
function calculatePremium(
|
21
|
+
uint256 sumInsuredAmount,
|
22
|
+
RiskId riskId,
|
23
|
+
uint256 lifetime,
|
24
|
+
bytes memory applicationData,
|
25
|
+
NftId bundleNftId,
|
26
|
+
ReferralId referralId
|
27
|
+
) external view returns (uint256 premiumAmount);
|
28
|
+
|
29
|
+
function calculateNetPremium(
|
30
|
+
uint256 sumInsuredAmount,
|
31
|
+
RiskId riskId,
|
32
|
+
uint256 lifetime,
|
33
|
+
bytes memory applicationData
|
34
|
+
) external view returns (uint256 netPremiumAmount);
|
35
|
+
|
36
|
+
|
37
|
+
function getPoolNftId() external view returns (NftId poolNftId);
|
38
|
+
function getDistributionNftId() external view returns (NftId distributionNftId);
|
39
|
+
}
|
@@ -1,29 +1,208 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {POOL} from "../types/ObjectType.sol";
|
5
|
+
import {IPoolService} from "../instance/service/IPoolService.sol";
|
6
|
+
import {IBundleService} from "../instance/service/IBundleService.sol";
|
7
|
+
import {NftId, NftIdLib} from "../types/NftId.sol";
|
8
|
+
import {Fee} from "../types/Fee.sol";
|
9
|
+
import {UFixed} from "../types/UFixed.sol";
|
10
|
+
import {IPoolComponent} from "./IPoolComponent.sol";
|
5
11
|
import {Component} from "./Component.sol";
|
12
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
13
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
6
14
|
|
15
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
16
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
7
17
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
18
|
+
|
19
|
+
abstract contract Pool is Component, IPoolComponent {
|
20
|
+
using NftIdLib for NftId;
|
21
|
+
|
22
|
+
bool internal _isConfirmingApplication;
|
23
|
+
UFixed internal _collateralizationLevel;
|
24
|
+
|
25
|
+
Fee internal _initialPoolFee;
|
26
|
+
Fee internal _initialStakingFee;
|
27
|
+
Fee internal _initialPerformanceFee;
|
28
|
+
|
29
|
+
TokenHandler internal _tokenHandler;
|
30
|
+
|
31
|
+
// may be used to interact with instance by derived contracts
|
32
|
+
IPoolService internal _poolService;
|
33
|
+
IBundleService private _bundleService;
|
34
|
+
|
35
|
+
modifier onlyPoolService() {
|
36
|
+
require(
|
37
|
+
msg.sender == address(_poolService),
|
38
|
+
"ERROR:POL-001:NOT_POOL_SERVICE");
|
39
|
+
_;
|
40
|
+
}
|
12
41
|
|
13
42
|
constructor(
|
14
|
-
address registry,
|
15
|
-
|
43
|
+
address registry,
|
44
|
+
NftId instanceNftId,
|
45
|
+
string memory name,
|
46
|
+
// TODO refactor into tokenNftId
|
47
|
+
address token,
|
48
|
+
bool isInterceptor,
|
49
|
+
bool isConfirmingApplication,
|
50
|
+
UFixed collateralizationLevel,
|
51
|
+
Fee memory poolFee,
|
52
|
+
Fee memory stakingFee,
|
53
|
+
Fee memory performanceFee,
|
54
|
+
address initialOwner,
|
55
|
+
bytes memory data
|
56
|
+
) Component(
|
57
|
+
registry,
|
58
|
+
instanceNftId,
|
59
|
+
name,
|
60
|
+
token,
|
61
|
+
POOL(),
|
62
|
+
isInterceptor,
|
63
|
+
initialOwner,
|
64
|
+
data
|
65
|
+
) {
|
66
|
+
_isConfirmingApplication = isConfirmingApplication;
|
67
|
+
// TODO add validation
|
68
|
+
_collateralizationLevel = collateralizationLevel;
|
69
|
+
_initialPoolFee = poolFee;
|
70
|
+
_initialStakingFee = stakingFee;
|
71
|
+
_initialPerformanceFee = performanceFee;
|
72
|
+
|
73
|
+
_tokenHandler = new TokenHandler(token);
|
74
|
+
|
75
|
+
_poolService = getInstance().getPoolService();
|
76
|
+
_bundleService = getInstance().getBundleService();
|
77
|
+
|
78
|
+
_registerInterface(type(IPoolComponent).interfaceId);
|
79
|
+
}
|
80
|
+
|
81
|
+
/**
|
82
|
+
* @dev see {IPool.underwrite}.
|
83
|
+
* Default implementation that only writes a {LogUnderwrittenByPool} entry.
|
84
|
+
*/
|
85
|
+
function underwrite(
|
86
|
+
NftId policyNftId,
|
87
|
+
bytes memory policyData,
|
88
|
+
bytes memory bundleFilter,
|
89
|
+
uint256 collateralizationAmount
|
90
|
+
)
|
91
|
+
external
|
92
|
+
restricted()
|
93
|
+
virtual override
|
94
|
+
{
|
95
|
+
_underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
|
96
|
+
}
|
97
|
+
|
98
|
+
/**
|
99
|
+
* @dev see {IPoolComponent.policyMatchesBundle}.
|
100
|
+
* Default implementation always returns true
|
101
|
+
*/
|
102
|
+
function policyMatchesBundle(
|
103
|
+
bytes memory, // policyData
|
104
|
+
bytes memory // bundleFilter
|
16
105
|
)
|
17
|
-
|
18
|
-
|
106
|
+
public
|
107
|
+
view
|
108
|
+
virtual override
|
109
|
+
returns (bool isMatching)
|
110
|
+
{
|
111
|
+
return true;
|
112
|
+
}
|
113
|
+
|
19
114
|
|
20
|
-
|
21
|
-
|
22
|
-
return _registry.POOL();
|
115
|
+
function isConfirmingApplication() external view override returns (bool isConfirmingApplication) {
|
116
|
+
return _isConfirmingApplication;
|
23
117
|
}
|
24
118
|
|
25
|
-
|
26
|
-
|
27
|
-
|
119
|
+
function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
|
120
|
+
return _collateralizationLevel;
|
121
|
+
}
|
122
|
+
|
123
|
+
function setFees(
|
124
|
+
Fee memory poolFee,
|
125
|
+
Fee memory stakingFee,
|
126
|
+
Fee memory performanceFee
|
127
|
+
)
|
128
|
+
external
|
129
|
+
onlyOwner
|
130
|
+
restricted()
|
131
|
+
override
|
132
|
+
{
|
133
|
+
_poolService.setFees(poolFee, stakingFee, performanceFee);
|
134
|
+
}
|
135
|
+
|
136
|
+
function _setBundleFee(NftId bundleNftId, Fee memory fee) internal {
|
137
|
+
_bundleService.setBundleFee(bundleNftId, fee);
|
138
|
+
}
|
139
|
+
|
140
|
+
function _lockBundle(NftId bundleNftId) internal {
|
141
|
+
_bundleService.lockBundle(bundleNftId);
|
142
|
+
}
|
143
|
+
|
144
|
+
function _unlockBundle(NftId bundleNftId) internal {
|
145
|
+
_bundleService.unlockBundle(bundleNftId);
|
146
|
+
}
|
147
|
+
|
148
|
+
function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
|
149
|
+
InstanceReader reader = getInstance().getInstanceReader();
|
150
|
+
setupInfo = reader.getPoolSetupInfo(getNftId());
|
151
|
+
|
152
|
+
// fallback to initial setup info (wallet is always != address(0))
|
153
|
+
if(setupInfo.wallet == address(0)) {
|
154
|
+
setupInfo = _getInitialSetupInfo();
|
155
|
+
}
|
156
|
+
}
|
157
|
+
|
158
|
+
function _getInitialSetupInfo() internal view returns (ISetup.PoolSetupInfo memory) {
|
159
|
+
return ISetup.PoolSetupInfo(
|
160
|
+
getProductNftId(),
|
161
|
+
_tokenHandler,
|
162
|
+
_collateralizationLevel,
|
163
|
+
_initialPoolFee,
|
164
|
+
_initialStakingFee,
|
165
|
+
_initialPerformanceFee,
|
166
|
+
false,
|
167
|
+
_isConfirmingApplication,
|
168
|
+
getWallet()
|
169
|
+
);
|
170
|
+
}
|
171
|
+
|
172
|
+
// Internals
|
173
|
+
|
174
|
+
function _underwrite(
|
175
|
+
NftId policyNftId,
|
176
|
+
bytes memory policyData,
|
177
|
+
bytes memory bundleFilter,
|
178
|
+
uint256 collateralizationAmount
|
179
|
+
)
|
180
|
+
internal
|
181
|
+
{
|
182
|
+
require(
|
183
|
+
policyMatchesBundle(policyData, bundleFilter),
|
184
|
+
"ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
|
185
|
+
);
|
186
|
+
|
187
|
+
emit LogUnderwrittenByPool(policyNftId, collateralizationAmount, address(this));
|
188
|
+
}
|
189
|
+
|
190
|
+
function _createBundle(
|
191
|
+
address bundleOwner,
|
192
|
+
Fee memory fee,
|
193
|
+
uint256 amount,
|
194
|
+
uint256 lifetime,
|
195
|
+
bytes calldata filter
|
196
|
+
)
|
197
|
+
internal
|
198
|
+
returns(NftId bundleNftId)
|
199
|
+
{
|
200
|
+
bundleNftId = _bundleService.createBundle(
|
201
|
+
bundleOwner,
|
202
|
+
fee,
|
203
|
+
amount,
|
204
|
+
lifetime,
|
205
|
+
filter
|
206
|
+
);
|
28
207
|
}
|
29
|
-
}
|
208
|
+
}
|
@@ -1,66 +1,266 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IRisk} from "../instance/module/IRisk.sol";
|
7
|
+
import {IPolicyService} from "../instance/service/IPolicyService.sol";
|
8
|
+
import {IProductComponent} from "./IProductComponent.sol";
|
9
|
+
import {NftId, NftIdLib} from "../types/NftId.sol";
|
10
|
+
import {PRODUCT} from "../types/ObjectType.sol";
|
11
|
+
import {ReferralId} from "../types/Referral.sol";
|
12
|
+
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
13
|
+
import {StateId} from "../types/StateId.sol";
|
14
|
+
import {Timestamp} from "../types/Timestamp.sol";
|
15
|
+
import {Fee} from "../types/Fee.sol";
|
5
16
|
import {Component} from "./Component.sol";
|
6
|
-
import {IProductComponent} from "./IProduct.sol";
|
7
|
-
import {NftId} from "../types/NftId.sol";
|
8
17
|
|
18
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
19
|
+
|
20
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
21
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
22
|
+
import {Pool} from "../components/Pool.sol";
|
23
|
+
import {Distribution} from "../components/Distribution.sol";
|
24
|
+
|
25
|
+
abstract contract Product is Component, IProductComponent {
|
26
|
+
using NftIdLib for NftId;
|
27
|
+
|
28
|
+
IPolicyService internal _policyService;
|
29
|
+
Pool internal _pool;
|
30
|
+
Distribution internal _distribution;
|
31
|
+
Fee internal _initialProductFee;
|
32
|
+
Fee internal _initialProcessingFee;
|
33
|
+
TokenHandler internal _tokenHandler;
|
9
34
|
|
10
|
-
|
11
|
-
|
12
|
-
IProductComponent
|
13
|
-
{
|
14
|
-
IProductService private _productService;
|
15
|
-
address private _pool;
|
35
|
+
NftId internal _poolNftId;
|
36
|
+
NftId internal _distributionNftId;
|
16
37
|
|
17
38
|
constructor(
|
18
|
-
address registry,
|
19
|
-
|
20
|
-
|
39
|
+
address registry,
|
40
|
+
NftId instanceNftid,
|
41
|
+
string memory name,
|
42
|
+
address token,
|
43
|
+
bool isInterceptor,
|
44
|
+
address pool,
|
45
|
+
address distribution,
|
46
|
+
Fee memory productFee,
|
47
|
+
Fee memory processingFee,
|
48
|
+
address initialOwner,
|
49
|
+
bytes memory data
|
50
|
+
) Component (
|
51
|
+
registry,
|
52
|
+
instanceNftid,
|
53
|
+
name,
|
54
|
+
token,
|
55
|
+
PRODUCT(),
|
56
|
+
isInterceptor,
|
57
|
+
initialOwner,
|
58
|
+
data
|
59
|
+
) {
|
60
|
+
// TODO add validation
|
61
|
+
_policyService = getInstance().getPolicyService();
|
62
|
+
_pool = Pool(pool);
|
63
|
+
_distribution = Distribution(distribution);
|
64
|
+
_initialProductFee = productFee;
|
65
|
+
_initialProcessingFee = processingFee;
|
66
|
+
|
67
|
+
_tokenHandler = new TokenHandler(token);
|
68
|
+
|
69
|
+
_poolNftId = getRegistry().getNftId(address(_pool));
|
70
|
+
_distributionNftId = getRegistry().getNftId(address(_distribution));
|
71
|
+
|
72
|
+
_registerInterface(type(IProductComponent).interfaceId);
|
73
|
+
}
|
74
|
+
|
75
|
+
|
76
|
+
function calculatePremium(
|
77
|
+
uint256 sumInsuredAmount,
|
78
|
+
RiskId riskId,
|
79
|
+
uint256 lifetime,
|
80
|
+
bytes memory applicationData,
|
81
|
+
NftId bundleNftId,
|
82
|
+
ReferralId referralId
|
21
83
|
)
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
84
|
+
external
|
85
|
+
view
|
86
|
+
override
|
87
|
+
returns (uint256 premiumAmount)
|
88
|
+
{
|
89
|
+
(premiumAmount,,,,) = _policyService.calculatePremium(
|
90
|
+
riskId,
|
91
|
+
sumInsuredAmount,
|
92
|
+
lifetime,
|
93
|
+
applicationData,
|
94
|
+
bundleNftId,
|
95
|
+
referralId
|
96
|
+
);
|
26
97
|
}
|
27
98
|
|
28
|
-
|
29
|
-
|
99
|
+
|
100
|
+
function calculateNetPremium(
|
30
101
|
uint256 sumInsuredAmount,
|
31
|
-
|
102
|
+
RiskId riskId,
|
32
103
|
uint256 lifetime,
|
33
|
-
|
104
|
+
bytes memory applicationData
|
34
105
|
)
|
35
|
-
|
36
|
-
|
106
|
+
external
|
107
|
+
view
|
108
|
+
virtual override
|
109
|
+
returns (uint256 netPremiumAmount)
|
37
110
|
{
|
38
|
-
|
111
|
+
// default 10% of sum insured
|
112
|
+
return sumInsuredAmount / 10;
|
113
|
+
}
|
114
|
+
|
115
|
+
function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
|
116
|
+
return RiskIdLib.toRiskId(riskName);
|
117
|
+
}
|
118
|
+
|
119
|
+
function _createRisk(
|
120
|
+
RiskId id,
|
121
|
+
bytes memory data
|
122
|
+
) internal {
|
123
|
+
getProductService().createRisk(
|
124
|
+
id,
|
125
|
+
data
|
126
|
+
);
|
127
|
+
}
|
128
|
+
|
129
|
+
function _updateRisk(
|
130
|
+
RiskId id,
|
131
|
+
bytes memory data
|
132
|
+
) internal {
|
133
|
+
getProductService().updateRisk(
|
134
|
+
id,
|
135
|
+
data
|
136
|
+
);
|
137
|
+
}
|
138
|
+
|
139
|
+
function _updateRiskState(
|
140
|
+
RiskId id,
|
141
|
+
StateId state
|
142
|
+
) internal {
|
143
|
+
getProductService().updateRiskState(
|
144
|
+
id,
|
145
|
+
state
|
146
|
+
);
|
147
|
+
}
|
148
|
+
|
149
|
+
function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
|
150
|
+
return getInstance().getInstanceReader().getRiskInfo(id);
|
151
|
+
}
|
152
|
+
|
153
|
+
function _createApplication(
|
154
|
+
address applicationOwner,
|
155
|
+
RiskId riskId,
|
156
|
+
uint256 sumInsuredAmount,
|
157
|
+
uint256 lifetime,
|
158
|
+
bytes memory applicationData,
|
159
|
+
NftId bundleNftId,
|
160
|
+
ReferralId referralId
|
161
|
+
) internal returns (NftId nftId) {
|
162
|
+
nftId = _policyService.createApplication(
|
39
163
|
applicationOwner,
|
164
|
+
riskId,
|
40
165
|
sumInsuredAmount,
|
41
|
-
premiumAmount,
|
42
166
|
lifetime,
|
43
|
-
|
167
|
+
applicationData,
|
168
|
+
bundleNftId,
|
169
|
+
referralId
|
44
170
|
);
|
45
171
|
}
|
46
172
|
|
47
|
-
function _underwrite(
|
173
|
+
function _underwrite(
|
174
|
+
NftId policyNftId,
|
175
|
+
bool requirePremiumPayment,
|
176
|
+
Timestamp activateAt
|
177
|
+
)
|
178
|
+
internal
|
179
|
+
{
|
180
|
+
_policyService.underwrite(
|
181
|
+
policyNftId,
|
182
|
+
requirePremiumPayment,
|
183
|
+
activateAt);
|
184
|
+
}
|
185
|
+
|
186
|
+
function _collectPremium(
|
187
|
+
NftId policyNftId,
|
188
|
+
Timestamp activateAt
|
189
|
+
)
|
190
|
+
internal
|
191
|
+
{
|
192
|
+
_policyService.collectPremium(
|
193
|
+
policyNftId,
|
194
|
+
activateAt);
|
195
|
+
}
|
196
|
+
|
197
|
+
function _activate(
|
198
|
+
NftId policyNftId,
|
199
|
+
Timestamp activateAt
|
200
|
+
)
|
201
|
+
internal
|
202
|
+
{
|
203
|
+
_policyService.activate(
|
204
|
+
policyNftId,
|
205
|
+
activateAt);
|
206
|
+
}
|
207
|
+
|
208
|
+
function _close(
|
209
|
+
NftId policyNftId
|
210
|
+
)
|
48
211
|
internal
|
49
212
|
{
|
50
|
-
|
213
|
+
_policyService.close(policyNftId);
|
214
|
+
}
|
215
|
+
|
216
|
+
function getPoolNftId() external view override returns (NftId poolNftId) {
|
217
|
+
return getRegistry().getNftId(address(_pool));
|
218
|
+
}
|
219
|
+
|
220
|
+
function getDistributionNftId() external view override returns (NftId distributionNftId) {
|
221
|
+
return getRegistry().getNftId(address(_distribution));
|
51
222
|
}
|
52
223
|
|
53
|
-
|
54
|
-
|
224
|
+
// from product component
|
225
|
+
function setFees(
|
226
|
+
Fee memory productFee,
|
227
|
+
Fee memory processingFee
|
228
|
+
)
|
229
|
+
external
|
230
|
+
onlyOwner
|
231
|
+
restricted()
|
232
|
+
override
|
233
|
+
{
|
234
|
+
getProductService().setFees(productFee, processingFee);
|
55
235
|
}
|
56
236
|
|
57
|
-
|
58
|
-
|
59
|
-
|
237
|
+
function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
238
|
+
InstanceReader reader = getInstance().getInstanceReader();
|
239
|
+
setupInfo = reader.getProductSetupInfo(getNftId());
|
240
|
+
|
241
|
+
// fallback to initial setup info (wallet is always != address(0))
|
242
|
+
if(setupInfo.wallet == address(0)) {
|
243
|
+
setupInfo = _getInitialSetupInfo();
|
244
|
+
}
|
60
245
|
}
|
61
246
|
|
62
|
-
|
63
|
-
|
64
|
-
|
247
|
+
function _getInitialSetupInfo() internal view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
248
|
+
ISetup.DistributionSetupInfo memory distributionSetupInfo = _distribution.getSetupInfo();
|
249
|
+
ISetup.PoolSetupInfo memory poolSetupInfo = _pool.getSetupInfo();
|
250
|
+
|
251
|
+
return ISetup.ProductSetupInfo(
|
252
|
+
getToken(),
|
253
|
+
_tokenHandler,
|
254
|
+
_distributionNftId,
|
255
|
+
_poolNftId,
|
256
|
+
distributionSetupInfo.distributionFee,
|
257
|
+
_initialProductFee,
|
258
|
+
_initialProcessingFee,
|
259
|
+
poolSetupInfo.poolFee,
|
260
|
+
poolSetupInfo.stakingFee,
|
261
|
+
poolSetupInfo.performanceFee,
|
262
|
+
false,
|
263
|
+
getWallet()
|
264
|
+
);
|
65
265
|
}
|
66
|
-
}
|
266
|
+
}
|