@etherisc/gif-next 0.0.2-d408403-475 → 0.0.2-d551b5e-892
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 +231 -27
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +302 -23
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +393 -54
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +217 -23
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -188
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +15 -227
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -213
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +460 -99
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +491 -80
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +788 -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/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +868 -1164
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +485 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2421 -1250
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +940 -0
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +999 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +532 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +285 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +264 -43
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +375 -79
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +317 -53
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +428 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +177 -75
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +174 -53
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +664 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +337 -49
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +171 -263
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +984 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +464 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +527 -53
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +448 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +290 -359
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +420 -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 +377 -37
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +947 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +487 -123
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1293 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +517 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +168 -123
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +215 -73
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +222 -54
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +283 -62
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +103 -23
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +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 +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
- package/contracts/components/BaseComponent.sol +75 -37
- package/contracts/components/Distribution.sol +49 -18
- package/contracts/components/IBaseComponent.sol +15 -3
- package/contracts/components/IDistributionComponent.sol +3 -7
- package/contracts/components/IPoolComponent.sol +7 -12
- package/contracts/components/IProductComponent.sol +4 -7
- package/contracts/components/Pool.sol +111 -79
- package/contracts/components/Product.sol +118 -53
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
- package/contracts/instance/BundleManager.sol +129 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IAccessManagerSimple.sol +391 -0
- package/contracts/instance/IInstance.sol +50 -45
- package/contracts/instance/IInstanceBase.sol +26 -0
- package/contracts/instance/IInstanceService.sol +32 -0
- package/contracts/instance/Instance.sol +443 -57
- package/contracts/instance/InstanceAccessManager.sol +288 -0
- package/contracts/instance/InstanceBase.sol +41 -0
- package/contracts/instance/InstanceReader.sol +315 -0
- package/contracts/instance/InstanceService.sol +252 -0
- package/contracts/instance/InstanceServiceManager.sol +57 -0
- package/contracts/instance/ObjectManager.sol +101 -0
- package/contracts/instance/base/ComponentServiceBase.sol +46 -16
- package/contracts/instance/base/IInstanceBase.sol +3 -2
- package/contracts/instance/base/IKeyValueStore.sol +13 -14
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +49 -38
- package/contracts/instance/base/Lifecycle.sol +1 -1
- package/contracts/instance/module/IAccess.sol +38 -0
- package/contracts/instance/module/IBundle.sol +20 -0
- package/contracts/instance/module/IDistribution.sol +39 -0
- package/contracts/instance/module/IPolicy.sol +45 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/instance/module/ISetup.sol +46 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ComponentOwnerService.sol +232 -72
- package/contracts/instance/service/DistributionService.sol +78 -19
- package/contracts/instance/service/DistributionServiceManager.sol +54 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -3
- package/contracts/instance/service/IDistributionService.sol +1 -1
- package/contracts/instance/service/IPolicyService.sol +87 -0
- package/contracts/instance/service/IPoolService.sol +17 -3
- package/contracts/instance/service/IProductService.sol +9 -76
- package/contracts/instance/service/PolicyService.sol +513 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +219 -51
- package/contracts/instance/service/PoolServiceManager.sol +54 -0
- package/contracts/instance/service/ProductService.sol +100 -436
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +80 -37
- package/contracts/registry/IRegistry.sol +49 -25
- package/contracts/registry/IRegistryService.sol +50 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +336 -270
- package/contracts/registry/RegistryService.sol +358 -0
- package/contracts/registry/RegistryServiceManager.sol +80 -0
- package/contracts/registry/TokenRegistry.sol +111 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/ERC165.sol +6 -2
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +8 -15
- package/contracts/{instance/base → shared}/IService.sol +3 -3
- package/contracts/shared/IVersionable.sol +55 -11
- package/contracts/shared/NftOwnable.sol +134 -0
- package/contracts/shared/ProxyManager.sol +94 -0
- package/contracts/shared/Registerable.sol +63 -59
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +55 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +113 -55
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRegisterable.sol +5 -6
- package/contracts/test/TestRoleId.sol +1 -1
- package/contracts/test/TestService.sol +5 -13
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +3 -3
- 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 +35 -14
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RoleId.sol +62 -9
- package/contracts/types/StateId.sol +5 -1
- package/contracts/types/Timestamp.sol +7 -3
- package/contracts/types/UFixed.sol +128 -12
- package/contracts/types/Version.sol +13 -1
- package/package.json +4 -3
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/contracts/experiment/statemachine/README.md +0 -112
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/InstanceBase.sol +0 -91
- package/contracts/instance/base/ModuleBase.sol +0 -57
- package/contracts/instance/base/ServiceBase.sol +0 -37
- package/contracts/instance/module/access/Access.sol +0 -149
- package/contracts/instance/module/access/IAccess.sol +0 -53
- package/contracts/instance/module/bundle/BundleModule.sol +0 -134
- package/contracts/instance/module/bundle/IBundle.sol +0 -53
- package/contracts/instance/module/component/ComponentModule.sol +0 -70
- package/contracts/instance/module/component/IComponent.sol +0 -28
- package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
- package/contracts/instance/module/distribution/IDistribution.sol +0 -10
- package/contracts/instance/module/policy/IPolicy.sol +0 -63
- package/contracts/instance/module/policy/PolicyModule.sol +0 -91
- package/contracts/instance/module/pool/IPoolModule.sol +0 -40
- package/contracts/instance/module/pool/PoolModule.sol +0 -90
- package/contracts/instance/module/risk/IRisk.sol +0 -26
- package/contracts/instance/module/risk/RiskModule.sol +0 -62
- package/contracts/instance/module/treasury/ITreasury.sol +0 -82
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
- package/contracts/registry/IChainNft.sol +0 -21
- package/contracts/registry/IRegistryLinked.sol +0 -8
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/test/TestDistribution.sol +0 -21
- package/contracts/test/TestPool.sol +0 -25
- package/contracts/test/TestProduct.sol +0 -72
- package/contracts/types/ReferralId.sol +0 -48
@@ -1,24 +1,39 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {ObjectType, POOL} from "../types/ObjectType.sol";
|
5
5
|
import {IProductService} from "../instance/service/IProductService.sol";
|
6
6
|
import {IPoolService} from "../instance/service/IPoolService.sol";
|
7
|
-
import {NftId} from "../types/NftId.sol";
|
7
|
+
import {NftId, zeroNftId, 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
11
|
import {BaseComponent} from "./BaseComponent.sol";
|
12
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
13
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
14
|
+
|
15
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
16
|
+
|
17
|
+
// import {IPool} from "../instance/module/pool/IPoolModule.sol";
|
18
|
+
import {ITreasury} from "../instance/module/ITreasury.sol";
|
19
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
20
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
21
|
+
|
22
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
23
|
+
import {Registerable} from "../shared/Registerable.sol";
|
12
24
|
|
13
25
|
contract Pool is BaseComponent, IPoolComponent {
|
26
|
+
using NftIdLib for NftId;
|
14
27
|
|
15
|
-
bool internal
|
28
|
+
bool internal _isConfirmingApplication;
|
16
29
|
UFixed internal _collateralizationLevel;
|
17
30
|
|
18
31
|
Fee internal _initialPoolFee;
|
19
32
|
Fee internal _initialStakingFee;
|
20
33
|
Fee internal _initialPerformanceFee;
|
21
34
|
|
35
|
+
TokenHandler internal _tokenHandler;
|
36
|
+
|
22
37
|
// may be used to interact with instance by derived contracts
|
23
38
|
IPoolService internal _poolService;
|
24
39
|
|
@@ -44,35 +59,29 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
44
59
|
NftId instanceNftId,
|
45
60
|
// TODO refactor into tokenNftId
|
46
61
|
address token,
|
47
|
-
bool
|
62
|
+
bool isInterceptor,
|
63
|
+
bool isConfirmingApplication,
|
48
64
|
UFixed collateralizationLevel,
|
49
65
|
Fee memory poolFee,
|
50
66
|
Fee memory stakingFee,
|
51
|
-
Fee memory performanceFee
|
67
|
+
Fee memory performanceFee,
|
68
|
+
address initialOwner
|
52
69
|
)
|
53
|
-
BaseComponent(registry, instanceNftId, token)
|
70
|
+
BaseComponent(registry, instanceNftId, token, POOL(), isInterceptor, initialOwner)
|
54
71
|
{
|
55
|
-
|
72
|
+
_isConfirmingApplication = isConfirmingApplication;
|
56
73
|
// TODO add validation
|
57
74
|
_collateralizationLevel = collateralizationLevel;
|
58
75
|
_initialPoolFee = poolFee;
|
59
76
|
_initialStakingFee = stakingFee;
|
60
77
|
_initialPerformanceFee = performanceFee;
|
61
78
|
|
79
|
+
_tokenHandler = new TokenHandler(token);
|
80
|
+
|
62
81
|
_poolService = _instance.getPoolService();
|
63
82
|
_productService = _instance.getProductService();
|
64
|
-
}
|
65
83
|
|
66
|
-
|
67
|
-
Fee memory poolFee,
|
68
|
-
Fee memory stakingFee,
|
69
|
-
Fee memory performanceFee
|
70
|
-
)
|
71
|
-
external
|
72
|
-
onlyOwner
|
73
|
-
override
|
74
|
-
{
|
75
|
-
_poolService.setFees(poolFee, stakingFee, performanceFee);
|
84
|
+
_registerInterface(type(IPoolComponent).interfaceId);
|
76
85
|
}
|
77
86
|
|
78
87
|
function createBundle(
|
@@ -97,17 +106,6 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
97
106
|
// TODO add logging
|
98
107
|
}
|
99
108
|
|
100
|
-
function setBundleFee(
|
101
|
-
NftId bundleNftId,
|
102
|
-
Fee memory fee
|
103
|
-
)
|
104
|
-
external
|
105
|
-
override
|
106
|
-
// TODO add onlyBundleOwner
|
107
|
-
{
|
108
|
-
_poolService.setBundleFee(bundleNftId, fee);
|
109
|
-
}
|
110
|
-
|
111
109
|
/**
|
112
110
|
* @dev see {IPool.underwrite}.
|
113
111
|
* Default implementation that only writes a {LogUnderwrittenByPool} entry.
|
@@ -142,14 +140,96 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
142
140
|
}
|
143
141
|
|
144
142
|
|
145
|
-
function
|
146
|
-
return
|
143
|
+
function isConfirmingApplication() external view override returns (bool isConfirmingApplication) {
|
144
|
+
return _isConfirmingApplication;
|
147
145
|
}
|
148
146
|
|
149
147
|
function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
|
150
148
|
return _collateralizationLevel;
|
151
149
|
}
|
152
150
|
|
151
|
+
function setFees(
|
152
|
+
Fee memory poolFee,
|
153
|
+
Fee memory stakingFee,
|
154
|
+
Fee memory performanceFee
|
155
|
+
)
|
156
|
+
external
|
157
|
+
onlyOwner
|
158
|
+
override
|
159
|
+
{
|
160
|
+
_poolService.setFees(poolFee, stakingFee, performanceFee);
|
161
|
+
}
|
162
|
+
|
163
|
+
function setBundleFee(
|
164
|
+
NftId bundleNftId,
|
165
|
+
Fee memory fee
|
166
|
+
)
|
167
|
+
external
|
168
|
+
override
|
169
|
+
// TODO add onlyBundleOwner
|
170
|
+
{
|
171
|
+
_poolService.setBundleFee(bundleNftId, fee);
|
172
|
+
}
|
173
|
+
|
174
|
+
function lockBundle(
|
175
|
+
NftId bundleNftId
|
176
|
+
)
|
177
|
+
external
|
178
|
+
override
|
179
|
+
// TODO add onlyBundleOwner
|
180
|
+
{
|
181
|
+
_poolService.lockBundle(bundleNftId);
|
182
|
+
}
|
183
|
+
|
184
|
+
function unlockBundle(
|
185
|
+
NftId bundleNftId
|
186
|
+
)
|
187
|
+
external
|
188
|
+
override
|
189
|
+
// TODO add onlyBundleOwner
|
190
|
+
{
|
191
|
+
_poolService.unlockBundle(bundleNftId);
|
192
|
+
}
|
193
|
+
|
194
|
+
function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
|
195
|
+
InstanceReader reader = _instance.getInstanceReader();
|
196
|
+
return reader.getPoolSetupInfo(getNftId());
|
197
|
+
}
|
198
|
+
|
199
|
+
// from IRegisterable
|
200
|
+
|
201
|
+
// TODO used only once, occupies space
|
202
|
+
// TODO do not use super
|
203
|
+
function getInitialInfo()
|
204
|
+
public
|
205
|
+
view
|
206
|
+
override (IRegisterable, Registerable)
|
207
|
+
returns (IRegistry.ObjectInfo memory, bytes memory)
|
208
|
+
{
|
209
|
+
(
|
210
|
+
IRegistry.ObjectInfo memory info,
|
211
|
+
) = super.getInitialInfo();
|
212
|
+
|
213
|
+
return (
|
214
|
+
info,
|
215
|
+
abi.encode(
|
216
|
+
ISetup.PoolSetupInfo(
|
217
|
+
_productNftId,
|
218
|
+
_tokenHandler,
|
219
|
+
_collateralizationLevel,
|
220
|
+
_initialPoolFee,
|
221
|
+
_initialStakingFee,
|
222
|
+
_initialPerformanceFee,
|
223
|
+
false,
|
224
|
+
_isConfirmingApplication,
|
225
|
+
_wallet
|
226
|
+
)
|
227
|
+
)
|
228
|
+
);
|
229
|
+
}
|
230
|
+
|
231
|
+
// Internals
|
232
|
+
|
153
233
|
function _underwrite(
|
154
234
|
NftId policyNftId,
|
155
235
|
bytes memory policyData,
|
@@ -184,52 +264,4 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
184
264
|
filter
|
185
265
|
);
|
186
266
|
}
|
187
|
-
|
188
|
-
// from pool component
|
189
|
-
function getPoolFee()
|
190
|
-
external
|
191
|
-
view
|
192
|
-
override
|
193
|
-
returns (Fee memory poolFee)
|
194
|
-
{
|
195
|
-
NftId productNftId = _instance.getProductNftId(getNftId());
|
196
|
-
if (_instance.hasTreasuryInfo(productNftId)) {
|
197
|
-
return _instance.getTreasuryInfo(productNftId).poolFee;
|
198
|
-
} else {
|
199
|
-
return _initialPoolFee;
|
200
|
-
}
|
201
|
-
}
|
202
|
-
|
203
|
-
function getStakingFee()
|
204
|
-
external
|
205
|
-
view
|
206
|
-
override
|
207
|
-
returns (Fee memory stakingFee)
|
208
|
-
{
|
209
|
-
NftId productNftId = _instance.getProductNftId(getNftId());
|
210
|
-
if (_instance.hasTreasuryInfo(productNftId)) {
|
211
|
-
return _instance.getTreasuryInfo(productNftId).stakingFee;
|
212
|
-
} else {
|
213
|
-
return _initialStakingFee;
|
214
|
-
}
|
215
|
-
}
|
216
|
-
|
217
|
-
function getPerformanceFee()
|
218
|
-
external
|
219
|
-
view
|
220
|
-
override
|
221
|
-
returns (Fee memory performanceFee)
|
222
|
-
{
|
223
|
-
NftId productNftId = _instance.getProductNftId(getNftId());
|
224
|
-
if (_instance.hasTreasuryInfo(productNftId)) {
|
225
|
-
return _instance.getTreasuryInfo(productNftId).performanceFee;
|
226
|
-
} else {
|
227
|
-
return _initialPerformanceFee;
|
228
|
-
}
|
229
|
-
}
|
230
|
-
|
231
|
-
// from registerable
|
232
|
-
function getType() public pure override returns (ObjectType) {
|
233
|
-
return POOL();
|
234
|
-
}
|
235
267
|
}
|
@@ -1,41 +1,73 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IRisk} from "../instance/module/IRisk.sol";
|
7
|
+
import {ITreasury} from "../instance/module/ITreasury.sol";
|
6
8
|
import {IProductService} from "../instance/service/IProductService.sol";
|
9
|
+
import {IPolicyService} from "../instance/service/IPolicyService.sol";
|
7
10
|
import {IProductComponent} from "./IProductComponent.sol";
|
8
|
-
import {NftId} from "../types/NftId.sol";
|
11
|
+
import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
|
9
12
|
import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
|
10
|
-
import {ReferralId} from "../types/
|
13
|
+
import {ReferralId} from "../types/Referral.sol";
|
11
14
|
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
12
15
|
import {StateId} from "../types/StateId.sol";
|
13
16
|
import {Timestamp} from "../types/Timestamp.sol";
|
14
|
-
import {Fee} from "../types/Fee.sol";
|
17
|
+
import {Fee, FeeLib} from "../types/Fee.sol";
|
15
18
|
import {BaseComponent} from "./BaseComponent.sol";
|
16
19
|
|
20
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
21
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
22
|
+
import {Registerable} from "../shared/Registerable.sol";
|
23
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
24
|
+
|
25
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
26
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
27
|
+
import {Pool} from "../components/Pool.sol";
|
28
|
+
import {Distribution} from "../components/Distribution.sol";
|
29
|
+
|
30
|
+
import {zeroNftId} from "../types/NftId.sol";
|
31
|
+
|
17
32
|
contract Product is BaseComponent, IProductComponent {
|
33
|
+
using NftIdLib for NftId;
|
34
|
+
|
18
35
|
IProductService internal _productService;
|
19
|
-
|
20
|
-
|
36
|
+
IPolicyService internal _policyService;
|
37
|
+
Pool internal _pool;
|
38
|
+
Distribution internal _distribution;
|
21
39
|
Fee internal _initialProductFee;
|
22
40
|
Fee internal _initialProcessingFee;
|
41
|
+
TokenHandler internal _tokenHandler;
|
42
|
+
|
43
|
+
NftId internal _poolNftId;
|
44
|
+
NftId internal _distributionNftId;
|
23
45
|
|
24
46
|
constructor(
|
25
47
|
address registry,
|
26
48
|
NftId instanceNftid,
|
27
49
|
address token,
|
50
|
+
bool isInterceptor,
|
28
51
|
address pool,
|
29
52
|
address distribution,
|
30
53
|
Fee memory productFee,
|
31
|
-
Fee memory processingFee
|
32
|
-
|
54
|
+
Fee memory processingFee,
|
55
|
+
address initialOwner
|
56
|
+
) BaseComponent(registry, instanceNftid, token, PRODUCT(), isInterceptor, initialOwner) {
|
33
57
|
// TODO add validation
|
34
58
|
_productService = _instance.getProductService();
|
35
|
-
|
36
|
-
|
59
|
+
_policyService = _instance.getPolicyService();
|
60
|
+
_pool = Pool(pool);
|
61
|
+
_distribution = Distribution(distribution);
|
37
62
|
_initialProductFee = productFee;
|
38
|
-
_initialProcessingFee = processingFee;
|
63
|
+
_initialProcessingFee = processingFee;
|
64
|
+
|
65
|
+
_tokenHandler = new TokenHandler(token);
|
66
|
+
|
67
|
+
_poolNftId = getRegistry().getNftId(address(_pool));
|
68
|
+
_distributionNftId = getRegistry().getNftId(address(_distribution));
|
69
|
+
|
70
|
+
_registerInterface(type(IProductComponent).interfaceId);
|
39
71
|
}
|
40
72
|
|
41
73
|
|
@@ -52,7 +84,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
52
84
|
override
|
53
85
|
returns (uint256 premiumAmount)
|
54
86
|
{
|
55
|
-
(premiumAmount,,,,) =
|
87
|
+
(premiumAmount,,,,) = _policyService.calculatePremium(
|
56
88
|
riskId,
|
57
89
|
sumInsuredAmount,
|
58
90
|
lifetime,
|
@@ -71,7 +103,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
71
103
|
)
|
72
104
|
external
|
73
105
|
view
|
74
|
-
override
|
106
|
+
virtual override
|
75
107
|
returns (uint256 netPremiumAmount)
|
76
108
|
{
|
77
109
|
// default 10% of sum insured
|
@@ -92,13 +124,13 @@ contract Product is BaseComponent, IProductComponent {
|
|
92
124
|
);
|
93
125
|
}
|
94
126
|
|
95
|
-
function
|
127
|
+
function _updateRisk(
|
96
128
|
RiskId id,
|
97
|
-
|
129
|
+
bytes memory data
|
98
130
|
) internal {
|
99
|
-
_productService.
|
131
|
+
_productService.updateRisk(
|
100
132
|
id,
|
101
|
-
|
133
|
+
data
|
102
134
|
);
|
103
135
|
}
|
104
136
|
|
@@ -113,7 +145,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
113
145
|
}
|
114
146
|
|
115
147
|
function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
|
116
|
-
return _instance.getRiskInfo(id);
|
148
|
+
return _instance.getInstanceReader().getRiskInfo(id);
|
117
149
|
}
|
118
150
|
|
119
151
|
function _createApplication(
|
@@ -125,7 +157,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
125
157
|
NftId bundleNftId,
|
126
158
|
ReferralId referralId
|
127
159
|
) internal returns (NftId nftId) {
|
128
|
-
nftId =
|
160
|
+
nftId = _policyService.createApplication(
|
129
161
|
applicationOwner,
|
130
162
|
riskId,
|
131
163
|
sumInsuredAmount,
|
@@ -143,7 +175,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
143
175
|
)
|
144
176
|
internal
|
145
177
|
{
|
146
|
-
|
178
|
+
_policyService.underwrite(
|
147
179
|
policyNftId,
|
148
180
|
requirePremiumPayment,
|
149
181
|
activateAt);
|
@@ -155,7 +187,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
155
187
|
)
|
156
188
|
internal
|
157
189
|
{
|
158
|
-
|
190
|
+
_policyService.collectPremium(
|
159
191
|
policyNftId,
|
160
192
|
activateAt);
|
161
193
|
}
|
@@ -166,17 +198,17 @@ contract Product is BaseComponent, IProductComponent {
|
|
166
198
|
)
|
167
199
|
internal
|
168
200
|
{
|
169
|
-
|
201
|
+
_policyService.activate(
|
170
202
|
policyNftId,
|
171
203
|
activateAt);
|
172
204
|
}
|
173
205
|
|
174
206
|
function getPoolNftId() external view override returns (NftId poolNftId) {
|
175
|
-
return
|
207
|
+
return getRegistry().getNftId(address(_pool));
|
176
208
|
}
|
177
209
|
|
178
210
|
function getDistributionNftId() external view override returns (NftId distributionNftId) {
|
179
|
-
return
|
211
|
+
return getRegistry().getNftId(address(_distribution));
|
180
212
|
}
|
181
213
|
|
182
214
|
// from product component
|
@@ -191,37 +223,70 @@ contract Product is BaseComponent, IProductComponent {
|
|
191
223
|
_productService.setFees(productFee, processingFee);
|
192
224
|
}
|
193
225
|
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
view
|
198
|
-
override
|
199
|
-
returns (Fee memory productFee)
|
200
|
-
{
|
201
|
-
NftId productNftId = getNftId();
|
202
|
-
if (_instance.hasTreasuryInfo(productNftId)) {
|
203
|
-
return _instance.getTreasuryInfo(productNftId).productFee;
|
204
|
-
} else {
|
205
|
-
return _initialProductFee;
|
206
|
-
}
|
226
|
+
function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
227
|
+
InstanceReader reader = _instance.getInstanceReader();
|
228
|
+
return reader.getProductSetupInfo(getNftId());
|
207
229
|
}
|
208
230
|
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
231
|
+
// from IRegisterable
|
232
|
+
|
233
|
+
function getInitialInfo()
|
234
|
+
public
|
235
|
+
view
|
236
|
+
override (IRegisterable, Registerable)
|
237
|
+
returns (IRegistry.ObjectInfo memory, bytes memory)
|
214
238
|
{
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
239
|
+
// from Registerable
|
240
|
+
(
|
241
|
+
IRegistry.ObjectInfo memory productInfo,
|
242
|
+
bytes memory data
|
243
|
+
) = super.getInitialInfo();
|
244
|
+
|
245
|
+
// TODO read pool & distribution fees
|
246
|
+
// 1) from pool -> the only option -> pool must be registered first?
|
247
|
+
// 2) from instance -> all fees are set into instance at product registration which is ongoing here
|
248
|
+
// checks are done in registryProduct() where THIS function is called
|
249
|
+
//require(getRegistry().getObjectInfo(_poolNftId).objectType == POOL(), "POOL_NOT_REGISTERED");
|
250
|
+
//require(getRegistry().getObjectInfo(_distributionNftId).objectType == DISTRIBUTION(), "DISTRIBUTION_NOT_REGISTERED");
|
251
|
+
|
252
|
+
// from PoolComponent
|
253
|
+
(
|
254
|
+
,
|
255
|
+
bytes memory poolData
|
256
|
+
) = _pool.getInitialInfo();
|
257
|
+
|
258
|
+
(
|
259
|
+
ISetup.PoolSetupInfo memory poolSetupInfo
|
260
|
+
) = abi.decode(poolData, (ISetup.PoolSetupInfo));
|
222
261
|
|
223
|
-
|
224
|
-
|
225
|
-
|
262
|
+
// from DistributionComponent
|
263
|
+
(
|
264
|
+
,
|
265
|
+
bytes memory distributionData
|
266
|
+
) = _distribution.getInitialInfo();
|
267
|
+
|
268
|
+
(
|
269
|
+
ISetup.DistributionSetupInfo memory distributionSetupInfo
|
270
|
+
) = abi.decode(distributionData, (ISetup.DistributionSetupInfo));
|
271
|
+
|
272
|
+
return (
|
273
|
+
productInfo,
|
274
|
+
abi.encode(
|
275
|
+
ISetup.ProductSetupInfo(
|
276
|
+
_token,
|
277
|
+
_tokenHandler,
|
278
|
+
_distributionNftId,
|
279
|
+
_poolNftId,
|
280
|
+
distributionSetupInfo.distributionFee,
|
281
|
+
_initialProductFee,
|
282
|
+
_initialProcessingFee,
|
283
|
+
poolSetupInfo.poolFee,
|
284
|
+
poolSetupInfo.stakingFee,
|
285
|
+
poolSetupInfo.performanceFee,
|
286
|
+
false,
|
287
|
+
_wallet
|
288
|
+
)
|
289
|
+
)
|
290
|
+
);
|
226
291
|
}
|
227
292
|
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
5
|
+
|
6
|
+
|
7
|
+
contract Cloner {
|
8
|
+
|
9
|
+
Mock1 public mock1;
|
10
|
+
Mock2 public mock2;
|
11
|
+
|
12
|
+
constructor() {
|
13
|
+
mock1 = new Mock1();
|
14
|
+
mock2 = new Mock2();
|
15
|
+
}
|
16
|
+
|
17
|
+
function createClone(address master)
|
18
|
+
external
|
19
|
+
returns (address cloned)
|
20
|
+
{
|
21
|
+
cloned = Clones.clone(master);
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
|
26
|
+
contract Mock1 {
|
27
|
+
function getValue() external virtual view returns (uint256) {
|
28
|
+
return 42;
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
contract Mock2 is Mock1 {
|
33
|
+
uint256 internal _value;
|
34
|
+
|
35
|
+
constructor() {
|
36
|
+
_value = 42;
|
37
|
+
}
|
38
|
+
|
39
|
+
function setValue(uint256 value) external virtual {
|
40
|
+
_value = value;
|
41
|
+
}
|
42
|
+
|
43
|
+
function getValue() external virtual override view returns (uint256) {
|
44
|
+
return _value;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
|
5
|
+
|
6
|
+
|
7
|
+
contract AccessManagerUpgradeableInitializeable is AccessManagerUpgradeable {
|
8
|
+
|
9
|
+
bool private _initialized;
|
10
|
+
|
11
|
+
function __AccessManagerUpgradeableInitializeable_init(address initialAdmin) public {
|
12
|
+
require(!_initialized, "AccessManager: already initialized");
|
13
|
+
|
14
|
+
if (initialAdmin == address(0)) {
|
15
|
+
revert AccessManagerInvalidInitialAdmin(address(0));
|
16
|
+
}
|
17
|
+
|
18
|
+
// admin is active immediately and without any execution delay.
|
19
|
+
_grantRole(ADMIN_ROLE, initialAdmin, 0, 0);
|
20
|
+
_initialized = true;
|
21
|
+
}
|
22
|
+
|
23
|
+
}
|