@etherisc/gif-next 0.0.2-f752d2a-551 → 0.0.2-f7a5beb-202
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +242 -2
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +613 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +806 -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} +276 -226
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +695 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +565 -68
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +577 -61
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +687 -78
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +668 -67
- 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/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 +1137 -1023
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +565 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1987 -1124
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1034 -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 +964 -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 +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +45 -127
- 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 +55 -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 +254 -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/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/{base/IService.sol/IService.json → service/IDistributionService.sol/IDistributionService.json} +202 -61
- 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 +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +198 -80
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +204 -150
- 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 +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +423 -88
- 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 +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +398 -215
- 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 +186 -12
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +455 -36
- 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 +465 -111
- 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 +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 +112 -37
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IService.sol/IService.json} +169 -117
- 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 +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 +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +193 -32
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +221 -71
- 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 +207 -31
- 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 +292 -63
- 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 +26 -3
- 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/Component.sol +247 -0
- package/contracts/components/Distribution.sol +143 -0
- package/contracts/components/IComponent.sol +50 -0
- package/contracts/components/IDistributionComponent.sol +47 -0
- package/contracts/components/IPoolComponent.sol +53 -33
- package/contracts/components/IProductComponent.sol +29 -9
- package/contracts/components/Pool.sol +172 -79
- package/contracts/components/Product.sol +187 -41
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/BundleManager.sol +125 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +65 -45
- package/contracts/instance/IInstanceService.sol +40 -0
- package/contracts/instance/Instance.sol +254 -53
- package/contracts/instance/InstanceAccessManager.sol +298 -0
- package/contracts/instance/InstanceReader.sol +293 -0
- package/contracts/instance/InstanceService.sol +362 -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 +13 -13
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +53 -37
- package/contracts/instance/base/Lifecycle.sol +16 -11
- 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 +8 -18
- package/contracts/instance/service/IProductService.sol +21 -39
- package/contracts/instance/service/PolicyService.sol +538 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +77 -91
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +167 -289
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +79 -36
- package/contracts/registry/IRegistry.sol +65 -24
- package/contracts/registry/IRegistryService.sol +65 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +358 -287
- 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 +6 -2
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +8 -17
- package/contracts/shared/IService.sol +16 -0
- package/contracts/shared/IVersionable.sol +55 -11
- package/contracts/shared/NftOwnable.sol +139 -0
- package/contracts/shared/ProxyManager.sol +94 -0
- package/contracts/shared/Registerable.sol +59 -59
- 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 +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 +7 -14
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +10 -5
- package/contracts/types/Key32.sol +8 -3
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +51 -14
- 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/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -174
- 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/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
- 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/base/ServiceBase.sol/ServiceBase.json +0 -300
- 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 -296
- 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 -296
- 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 -188
- 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 -188
- 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 -261
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
- 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 -149
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
- 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 -533
- 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 -533
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -523
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- 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 -387
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -88
- package/contracts/components/IBaseComponent.sol +0 -19
- package/contracts/experiment/statemachine/README.md +0 -112
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/ComponentServiceBase.sol +0 -42
- package/contracts/instance/base/IInstanceBase.sol +0 -14
- package/contracts/instance/base/IService.sol +0 -15
- package/contracts/instance/base/InstanceBase.sol +0 -80
- package/contracts/instance/base/ModuleBase.sol +0 -52
- 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 -136
- package/contracts/instance/module/bundle/IBundle.sol +0 -58
- package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
- package/contracts/instance/module/compensation/ICompensation.sol +0 -10
- package/contracts/instance/module/component/ComponentModule.sol +0 -95
- package/contracts/instance/module/component/IComponent.sol +0 -53
- package/contracts/instance/module/policy/IPolicy.sol +0 -60
- package/contracts/instance/module/policy/PolicyModule.sol +0 -76
- package/contracts/instance/module/pool/IPoolModule.sol +0 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -87
- package/contracts/instance/module/risk/IRisk.sol +0 -10
- package/contracts/instance/module/risk/RiskModule.sol +0 -8
- package/contracts/instance/module/treasury/ITreasury.sol +0 -103
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
- package/contracts/instance/service/ComponentOwnerService.sol +0 -170
- package/contracts/instance/service/IComponentOwnerService.sol +0 -22
- 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 -22
- package/contracts/test/TestProduct.sol +0 -44
@@ -0,0 +1,50 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
7
|
+
import {IInstance} from "../instance/IInstance.sol";
|
8
|
+
import {IInstanceService} from "../instance/IInstanceService.sol";
|
9
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
10
|
+
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
11
|
+
import {NftId} from "../types/NftId.sol";
|
12
|
+
|
13
|
+
interface IComponent is
|
14
|
+
IRegisterable,
|
15
|
+
ITransferInterceptor
|
16
|
+
{
|
17
|
+
|
18
|
+
error ErrorComponentNotChainNft(address caller);
|
19
|
+
error ErrorComponentNotProductService(address caller);
|
20
|
+
error ErrorComponentNotInstance(NftId instanceNftId, address instance);
|
21
|
+
error ErrorComponentProductNftAlreadySet();
|
22
|
+
error ErrorComponentWalletAddressZero();
|
23
|
+
error ErrorComponentWalletAddressIsSameAsCurrent(address newWallet);
|
24
|
+
error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
|
25
|
+
error ErrorComponentUnauthorized(address caller, uint64 requiredRoleIdNum);
|
26
|
+
|
27
|
+
event LogComponentWalletAddressChanged(address newWallet);
|
28
|
+
event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
|
29
|
+
|
30
|
+
function getName() external view returns (string memory name);
|
31
|
+
|
32
|
+
// TODO remove and replace with accessmanaged target locking mechanism
|
33
|
+
function lock() external;
|
34
|
+
function unlock() external;
|
35
|
+
|
36
|
+
function getToken() external view returns (IERC20Metadata token);
|
37
|
+
|
38
|
+
function setWallet(address walletAddress) external;
|
39
|
+
function getWallet() external view returns (address walletAddress);
|
40
|
+
|
41
|
+
function isNftInterceptor() external view returns(bool isInterceptor);
|
42
|
+
|
43
|
+
function getInstance() external view returns (IInstance instance);
|
44
|
+
|
45
|
+
function setProductNftId(NftId productNftId) external;
|
46
|
+
function getProductNftId() external view returns (NftId productNftId);
|
47
|
+
|
48
|
+
function getInstanceService() external view returns (IInstanceService);
|
49
|
+
function getProductService() external view returns (IProductService);
|
50
|
+
}
|
@@ -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
|
+
}
|
@@ -1,30 +1,39 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {NftId} from "../types/NftId.sol";
|
5
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";
|
6
8
|
import {UFixed} from "../types/UFixed.sol";
|
7
|
-
import {IBaseComponent} from "./IBaseComponent.sol";
|
8
9
|
|
9
|
-
|
10
|
+
/// @dev pool components hold and manage the collateral to cover active policies
|
11
|
+
/// pools come in different flavors
|
12
|
+
interface IPoolComponent is IComponent {
|
10
13
|
|
11
14
|
event LogUnderwrittenByPool(NftId policyNftId, uint256 collateralizationAmount, address pool);
|
12
15
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
16
|
+
error ErrorPoolNotPoolService(address service);
|
17
|
+
|
18
|
+
function getSetupInfo() external view returns (ISetup.PoolSetupInfo memory setupInfo);
|
19
|
+
|
20
|
+
function setFees(
|
21
|
+
Fee memory poolFee,
|
22
|
+
Fee memory stakingFee,
|
23
|
+
Fee memory performanceFee
|
24
|
+
) external;
|
25
|
+
|
26
|
+
/// @dev sets an additional bundle fee, this fee is added on top of the poolFee and deducted from the premium amounts.
|
27
|
+
/// via these fees individual bundler owner may earn income per policy in the context of peer to peer pools
|
28
|
+
function setBundleFee(
|
29
|
+
NftId bundleNftId,
|
30
|
+
Fee memory fee
|
31
|
+
) external;
|
32
|
+
|
33
|
+
/// @dev this is a callback function that is called by the product service when underwriting a policy.
|
34
|
+
/// the pool has the option to check the details and object to underwriting by reverting.
|
35
|
+
/// the function is only called for "active" pools that ask to be involved/notified
|
36
|
+
/// by product related state changes.
|
28
37
|
function underwrite(
|
29
38
|
NftId policyNftId,
|
30
39
|
bytes memory policyData,
|
@@ -32,10 +41,31 @@ interface IPoolComponent is IBaseComponent {
|
|
32
41
|
uint256 collateralizationAmount
|
33
42
|
) external;
|
34
43
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
44
|
+
function lockBundle(NftId bundleNftId) external;
|
45
|
+
|
46
|
+
function unlockBundle(NftId bundleNftId) external;
|
47
|
+
|
48
|
+
/// @dev defines the multiplier to calculate the required collateral to cover a given sum insured amount
|
49
|
+
function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
|
50
|
+
|
51
|
+
/// @dev declares if pool intercept transfers of bundle nft ids
|
52
|
+
/// - yes: pool may block transfer of bundle ownership or simply updates some bookkeeping related to bundle ownership
|
53
|
+
/// - no: pool is not involved in transfer of bundle ownership
|
54
|
+
function isInterceptingBundleTransfers() external view returns (bool);
|
55
|
+
|
56
|
+
/// @dev declares if pool relies on external management of collateral (yes/no):
|
57
|
+
/// - yes: underwriting of new policies does not require an actual token balance, instead it is assumed that the pool owner will manage funds externally and inject enough tokens to allow process confirmed payouts
|
58
|
+
/// - no: the pool smart contract ensures that the necessary capacity of the pool prior to underwriting.
|
59
|
+
function isExternallyManaged() external view returns (bool);
|
60
|
+
|
61
|
+
/// @dev declares if pool component is actively involved in underwriting (yes/no):
|
62
|
+
/// - yes: verifying pools components actively confirm underwriting applications, ie the pool component logic explicitly needs to confirm the locking of collateral to cover the sum insured of the policy
|
63
|
+
/// - no: underwriting a policy does not require any interaction with the pool component if the covering bundle can provide the necessary captial
|
64
|
+
function isVerifyingApplications() external view returns (bool);
|
65
|
+
|
66
|
+
/// @dev returns true iff the policy application data in policyData matches
|
67
|
+
/// with the bundle filter criteria encoded in bundleFilter
|
68
|
+
/// this is a callback function that is only called if a pool declares itself as a verifying pool
|
39
69
|
function policyMatchesBundle(
|
40
70
|
bytes memory policyData,
|
41
71
|
bytes memory bundleFilter
|
@@ -44,14 +74,4 @@ interface IPoolComponent is IBaseComponent {
|
|
44
74
|
view
|
45
75
|
returns (bool isMatching);
|
46
76
|
|
47
|
-
function isVerifying() external view returns (bool verifying);
|
48
|
-
|
49
|
-
function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
|
50
|
-
|
51
|
-
function getStakingFee() external view returns (Fee memory stakingFee);
|
52
|
-
|
53
|
-
function getPerformanceFee()
|
54
|
-
external
|
55
|
-
view
|
56
|
-
returns (Fee memory performanceFee);
|
57
77
|
}
|
@@ -1,19 +1,39 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {NftId} from "../types/NftId.sol";
|
5
4
|
import {Fee} from "../types/Fee.sol";
|
6
|
-
import {
|
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);
|
7
14
|
|
8
|
-
interface IProductComponent is IBaseComponent {
|
9
15
|
function setFees(
|
10
|
-
Fee memory
|
16
|
+
Fee memory productFee,
|
11
17
|
Fee memory processingFee
|
12
18
|
) external;
|
13
19
|
|
14
|
-
function
|
15
|
-
|
16
|
-
|
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);
|
17
35
|
|
18
|
-
|
36
|
+
|
37
|
+
function getPoolNftId() external view returns (NftId poolNftId);
|
38
|
+
function getDistributionNftId() external view returns (NftId distributionNftId);
|
19
39
|
}
|
@@ -1,78 +1,100 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {IProductService} from "../instance/service/IProductService.sol";
|
4
|
+
import {POOL} from "../types/ObjectType.sol";
|
6
5
|
import {IPoolService} from "../instance/service/IPoolService.sol";
|
7
|
-
import {
|
6
|
+
import {IBundleService} from "../instance/service/IBundleService.sol";
|
7
|
+
import {NftId, NftIdLib} from "../types/NftId.sol";
|
8
8
|
import {Fee} from "../types/Fee.sol";
|
9
9
|
import {UFixed} from "../types/UFixed.sol";
|
10
10
|
import {IPoolComponent} from "./IPoolComponent.sol";
|
11
|
-
import {
|
11
|
+
import {Component} from "./Component.sol";
|
12
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
13
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
12
14
|
|
13
|
-
|
15
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
14
16
|
|
15
|
-
|
16
|
-
|
17
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
18
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
21
|
+
import {Registerable} from "../shared/Registerable.sol";
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
+
abstract contract Pool is
|
24
|
+
Component,
|
25
|
+
IPoolComponent
|
26
|
+
{
|
27
|
+
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Pool.sol")) - 1)) & ~bytes32(uint256(0xff));
|
28
|
+
bytes32 public constant POOL_STORAGE_LOCATION_V1 = 0xecf35607b7e822969ee3625cd815bfc27031f3a93d0be2676e5bde943e2e2300;
|
23
29
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
30
|
+
struct PoolStorage {
|
31
|
+
UFixed _collateralizationLevel;
|
32
|
+
|
33
|
+
bool _isExternallyManaged;
|
34
|
+
bool _isInterceptingBundleTransfers;
|
35
|
+
bool _isVerifyingApplications;
|
36
|
+
|
37
|
+
Fee _initialPoolFee;
|
38
|
+
Fee _initialStakingFee;
|
39
|
+
Fee _initialPerformanceFee;
|
40
|
+
|
41
|
+
TokenHandler _tokenHandler;
|
42
|
+
|
43
|
+
// may be used to interact with instance by derived contracts
|
44
|
+
IPoolService _poolService;
|
45
|
+
IBundleService _bundleService;
|
29
46
|
}
|
30
47
|
|
31
|
-
modifier
|
32
|
-
|
33
|
-
msg.sender
|
34
|
-
|
48
|
+
modifier onlyPoolService() {
|
49
|
+
if(msg.sender != address(_getStorage()._poolService)) {
|
50
|
+
revert ErrorPoolNotPoolService(msg.sender);
|
51
|
+
}
|
35
52
|
_;
|
36
53
|
}
|
37
54
|
|
38
|
-
|
55
|
+
|
56
|
+
function _initializePool(
|
39
57
|
address registry,
|
40
58
|
NftId instanceNftId,
|
59
|
+
string memory name,
|
41
60
|
// TODO refactor into tokenNftId
|
42
61
|
address token,
|
43
|
-
|
44
|
-
|
62
|
+
UFixed collateralizationLevel,
|
63
|
+
bool isInterceptingNftTransfers,
|
64
|
+
bool isExternallyManaging,
|
65
|
+
bool isVerifying,
|
66
|
+
Fee memory poolFee,
|
67
|
+
Fee memory stakingFee,
|
68
|
+
Fee memory performanceFee,
|
69
|
+
address initialOwner,
|
70
|
+
bytes memory data
|
45
71
|
)
|
46
|
-
|
72
|
+
internal
|
73
|
+
//onlyInitializing//TODO uncomment when "fully" upgradeable
|
74
|
+
virtual
|
47
75
|
{
|
48
|
-
|
76
|
+
_initializeComponent(registry, instanceNftId, name, token, POOL(), isInterceptingNftTransfers, initialOwner, data);
|
77
|
+
|
78
|
+
PoolStorage storage $ = _getStorage();
|
79
|
+
|
80
|
+
$._isExternallyManaged = isExternallyManaging;
|
81
|
+
$._isVerifyingApplications = isVerifying;
|
82
|
+
|
49
83
|
// TODO add validation
|
50
|
-
_collateralizationLevel = collateralizationLevel;
|
84
|
+
$._collateralizationLevel = collateralizationLevel;
|
85
|
+
$._initialPoolFee = poolFee;
|
86
|
+
$._initialStakingFee = stakingFee;
|
87
|
+
$._initialPerformanceFee = performanceFee;
|
51
88
|
|
52
|
-
|
53
|
-
_productService = _instance.getProductService();
|
54
|
-
}
|
89
|
+
$._tokenHandler = new TokenHandler(token);
|
55
90
|
|
56
|
-
|
57
|
-
|
58
|
-
uint256 lifetime,
|
59
|
-
bytes memory filter
|
60
|
-
)
|
61
|
-
external
|
62
|
-
virtual override
|
63
|
-
returns(NftId bundleNftId)
|
64
|
-
{
|
65
|
-
address owner = msg.sender;
|
66
|
-
bundleNftId = _poolService.createBundle(
|
67
|
-
owner,
|
68
|
-
initialAmount,
|
69
|
-
lifetime,
|
70
|
-
filter
|
71
|
-
);
|
91
|
+
$._poolService = getInstance().getPoolService();
|
92
|
+
$._bundleService = getInstance().getBundleService();
|
72
93
|
|
73
|
-
|
94
|
+
_registerInterface(type(IPoolComponent).interfaceId);
|
74
95
|
}
|
75
96
|
|
97
|
+
|
76
98
|
/**
|
77
99
|
* @dev see {IPool.underwrite}.
|
78
100
|
* Default implementation that only writes a {LogUnderwrittenByPool} entry.
|
@@ -90,31 +112,111 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
90
112
|
_underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
|
91
113
|
}
|
92
114
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
115
|
+
|
116
|
+
function isInterceptingBundleTransfers() external view override returns (bool) {
|
117
|
+
return isNftInterceptor();
|
118
|
+
}
|
119
|
+
|
120
|
+
|
121
|
+
function isExternallyManaged() external view override returns (bool) {
|
122
|
+
return _getStorage()._isExternallyManaged;
|
123
|
+
}
|
124
|
+
|
125
|
+
|
126
|
+
function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
|
127
|
+
return _getStorage()._collateralizationLevel;
|
128
|
+
}
|
129
|
+
|
130
|
+
|
131
|
+
function isVerifyingApplications() external view override returns (bool isConfirmingApplication) {
|
132
|
+
return _getStorage()._isVerifyingApplications;
|
133
|
+
}
|
134
|
+
|
135
|
+
|
136
|
+
/// @dev see {IPoolComponent.policyMatchesBundle}.
|
137
|
+
/// Default implementation always returns true
|
97
138
|
function policyMatchesBundle(
|
98
139
|
bytes memory, // policyData
|
99
140
|
bytes memory // bundleFilter
|
100
141
|
)
|
101
142
|
public
|
102
|
-
|
143
|
+
pure
|
103
144
|
virtual override
|
104
145
|
returns (bool isMatching)
|
105
146
|
{
|
106
147
|
return true;
|
107
148
|
}
|
108
149
|
|
150
|
+
function setFees(
|
151
|
+
Fee memory poolFee,
|
152
|
+
Fee memory stakingFee,
|
153
|
+
Fee memory performanceFee
|
154
|
+
)
|
155
|
+
external
|
156
|
+
onlyOwner
|
157
|
+
override
|
158
|
+
{
|
159
|
+
_getStorage()._poolService.setFees(poolFee, stakingFee, performanceFee);
|
160
|
+
}
|
161
|
+
|
162
|
+
function setBundleFee(
|
163
|
+
NftId bundleNftId,
|
164
|
+
Fee memory fee
|
165
|
+
)
|
166
|
+
external
|
167
|
+
override
|
168
|
+
// TODO add onlyBundleOwner
|
169
|
+
{
|
170
|
+
_getStorage()._bundleService.setBundleFee(bundleNftId, fee);
|
171
|
+
}
|
109
172
|
|
110
|
-
function
|
111
|
-
|
173
|
+
function lockBundle(
|
174
|
+
NftId bundleNftId
|
175
|
+
)
|
176
|
+
external
|
177
|
+
override
|
178
|
+
// TODO add onlyBundleOwner
|
179
|
+
{
|
180
|
+
_getStorage()._bundleService.lockBundle(bundleNftId);
|
112
181
|
}
|
113
182
|
|
114
|
-
function
|
115
|
-
|
183
|
+
function unlockBundle(
|
184
|
+
NftId bundleNftId
|
185
|
+
)
|
186
|
+
external
|
187
|
+
override
|
188
|
+
// TODO add onlyBundleOwner
|
189
|
+
{
|
190
|
+
_getStorage()._bundleService.unlockBundle(bundleNftId);
|
191
|
+
}
|
192
|
+
|
193
|
+
function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
|
194
|
+
InstanceReader reader = getInstance().getInstanceReader();
|
195
|
+
setupInfo = reader.getPoolSetupInfo(getNftId());
|
196
|
+
|
197
|
+
// fallback to initial setup info (wallet is always != address(0))
|
198
|
+
if(setupInfo.wallet == address(0)) {
|
199
|
+
setupInfo = _getInitialSetupInfo();
|
200
|
+
}
|
201
|
+
}
|
202
|
+
|
203
|
+
function _getInitialSetupInfo() internal view returns (ISetup.PoolSetupInfo memory) {
|
204
|
+
PoolStorage storage $ = _getStorage();
|
205
|
+
return ISetup.PoolSetupInfo(
|
206
|
+
getProductNftId(),
|
207
|
+
$._tokenHandler,
|
208
|
+
$._collateralizationLevel,
|
209
|
+
$._initialPoolFee,
|
210
|
+
$._initialStakingFee,
|
211
|
+
$._initialPerformanceFee,
|
212
|
+
isNftInterceptor(),
|
213
|
+
$._isVerifyingApplications,
|
214
|
+
getWallet()
|
215
|
+
);
|
116
216
|
}
|
117
217
|
|
218
|
+
// Internals
|
219
|
+
|
118
220
|
function _underwrite(
|
119
221
|
NftId policyNftId,
|
120
222
|
bytes memory policyData,
|
@@ -133,42 +235,33 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
133
235
|
|
134
236
|
function _createBundle(
|
135
237
|
address bundleOwner,
|
238
|
+
Fee memory fee,
|
136
239
|
uint256 amount,
|
137
240
|
uint256 lifetime,
|
138
|
-
bytes
|
241
|
+
bytes memory filter
|
139
242
|
)
|
140
243
|
internal
|
141
244
|
returns(NftId bundleNftId)
|
142
245
|
{
|
143
|
-
bundleNftId =
|
246
|
+
bundleNftId = _getStorage()._bundleService.createBundle(
|
144
247
|
bundleOwner,
|
248
|
+
fee,
|
145
249
|
amount,
|
146
250
|
lifetime,
|
147
|
-
filter
|
148
|
-
);
|
149
|
-
}
|
251
|
+
filter);
|
150
252
|
|
151
|
-
|
152
|
-
function getStakingFee()
|
153
|
-
external
|
154
|
-
view
|
155
|
-
override
|
156
|
-
returns (Fee memory stakingFee)
|
157
|
-
{
|
158
|
-
return _instance.getPoolSetup(getNftId()).stakingFee;
|
253
|
+
// TODO add logging
|
159
254
|
}
|
160
255
|
|
161
|
-
function
|
162
|
-
|
163
|
-
view
|
164
|
-
override
|
165
|
-
returns (Fee memory performanceFee)
|
166
|
-
{
|
167
|
-
return _instance.getPoolSetup(getNftId()).performanceFee;
|
256
|
+
function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
|
257
|
+
return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
|
168
258
|
}
|
169
259
|
|
170
|
-
|
171
|
-
function
|
172
|
-
|
260
|
+
|
261
|
+
function _getStorage() private pure returns (PoolStorage storage $) {
|
262
|
+
assembly {
|
263
|
+
$.slot := POOL_STORAGE_LOCATION_V1
|
264
|
+
}
|
173
265
|
}
|
266
|
+
|
174
267
|
}
|