@etherisc/gif-next 0.0.2-299fe4a-464 → 0.0.2-2a0a7d0-893
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 +255 -8
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/Component.sol/Component.json} +275 -229
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +691 -0
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +413 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +90 -171
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +55 -177
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +539 -68
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +558 -72
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +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/TypeA.sol/TypeALib.json +2 -2
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1132 -1182
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +570 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1895 -1226
- 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 +956 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +460 -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 +595 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +100 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/{module/lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +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/IDistribution.sol/IDistribution.json +10 -0
- 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/{access/IAccess.sol/IAccess.json → IRisk.sol/IRisk.json} +2 -2
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{pool/IPoolModule.sol/IPool.json → 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 +1094 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +436 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +764 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +424 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +720 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IService.sol/IService.json → IDistributionService.sol/IDistributionService.json} +211 -65
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +771 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +205 -82
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +214 -155
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1219 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +492 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +413 -114
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +424 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +391 -228
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +424 -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 +1187 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +451 -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 +381 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IService.sol/IService.json} +179 -122
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +60 -19
- 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/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +228 -73
- 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 +83 -19
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +30 -6
- 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 +44 -10
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +283 -90
- 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 +14 -18
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +106 -50
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +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 +4 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
- 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/UFixedLib.json +479 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +101 -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 +177 -0
- package/contracts/components/Distribution.sol +154 -0
- package/contracts/components/IComponent.sol +37 -0
- package/contracts/components/IDistributionComponent.sol +44 -0
- package/contracts/components/IPoolComponent.sol +19 -10
- package/contracts/components/IProductComponent.sol +25 -9
- package/contracts/components/Pool.sol +134 -50
- package/contracts/components/Product.sol +218 -40
- 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 +55 -39
- package/contracts/instance/IInstanceService.sol +40 -0
- package/contracts/instance/Instance.sol +238 -47
- 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 +133 -0
- package/contracts/instance/base/IInstanceBase.sol +21 -0
- package/contracts/instance/base/IKeyValueStore.sol +49 -0
- package/contracts/instance/base/ILifecycle.sol +30 -0
- package/contracts/instance/base/KeyValueStore.sol +172 -0
- package/contracts/instance/{module/lifecycle/LifecycleModule.sol → base/Lifecycle.sol} +51 -40
- 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 +115 -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 +110 -66
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +178 -295
- 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 +57 -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 +312 -0
- package/contracts/registry/RegistryServiceManager.sol +62 -0
- package/contracts/registry/ReleaseManager.sol +352 -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 +56 -12
- package/contracts/shared/NftOwnable.sol +136 -0
- package/contracts/shared/ProxyManager.sol +94 -0
- package/contracts/shared/Registerable.sol +63 -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 +112 -57
- package/contracts/test/TestFee.sol +4 -4
- package/contracts/test/TestRegisterable.sol +5 -6
- package/contracts/test/TestRoleId.sol +2 -2
- package/contracts/test/TestService.sol +8 -18
- package/contracts/test/TestVersion.sol +4 -7
- package/contracts/test/TestVersionable.sol +2 -5
- package/contracts/test/Usdc.sol +26 -0
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +44 -20
- package/contracts/types/Key32.sol +50 -0
- package/contracts/types/NftId.sol +16 -1
- 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 +65 -11
- package/contracts/types/StateId.sol +12 -2
- package/contracts/types/Timestamp.sol +7 -3
- package/contracts/types/UFixed.sol +144 -25
- package/contracts/types/Version.sol +42 -26
- package/package.json +7 -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/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -276
- 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 -276
- 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/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
- 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/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/product/IProductModule.sol/IProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.json +0 -10
- package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.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 -538
- 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 -538
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -519
- package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.json +0 -300
- 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/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
- package/contracts/components/BaseComponent.sol +0 -89
- 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/IServiceLinked.sol +0 -12
- package/contracts/instance/InstanceBase.sol +0 -74
- 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 -228
- package/contracts/instance/module/bundle/IBundle.sol +0 -53
- package/contracts/instance/module/component/ComponentModule.sol +0 -104
- package/contracts/instance/module/component/IComponent.sol +0 -53
- package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
- package/contracts/instance/module/policy/IPolicy.sol +0 -60
- package/contracts/instance/module/policy/PolicyModule.sol +0 -84
- package/contracts/instance/module/pool/IPoolModule.sol +0 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -87
- package/contracts/instance/module/product/IProductModule.sol +0 -6
- package/contracts/instance/module/product/ProductModule.sol +0 -8
- package/contracts/instance/module/treasury/ITreasury.sol +0 -104
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -148
- package/contracts/instance/service/ComponentOwnerService.sol +0 -174
- package/contracts/instance/service/ComponentServiceBase.sol +0 -41
- package/contracts/instance/service/IComponentOwnerService.sol +0 -22
- package/contracts/instance/service/IService.sol +0 -15
- package/contracts/instance/service/ServiceBase.sol +0 -39
- 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
|
@@ -1,25 +1,40 @@
|
|
|
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
|
-
|
|
17
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
|
18
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
|
19
|
+
|
|
20
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
|
21
|
+
import {Registerable} from "../shared/Registerable.sol";
|
|
22
|
+
|
|
23
|
+
abstract contract Pool is Component, IPoolComponent {
|
|
24
|
+
using NftIdLib for NftId;
|
|
25
|
+
|
|
26
|
+
bool internal _isConfirmingApplication;
|
|
16
27
|
UFixed internal _collateralizationLevel;
|
|
17
28
|
|
|
29
|
+
Fee internal _initialPoolFee;
|
|
30
|
+
Fee internal _initialStakingFee;
|
|
31
|
+
Fee internal _initialPerformanceFee;
|
|
32
|
+
|
|
33
|
+
TokenHandler internal _tokenHandler;
|
|
34
|
+
|
|
18
35
|
// may be used to interact with instance by derived contracts
|
|
19
36
|
IPoolService internal _poolService;
|
|
20
|
-
|
|
21
|
-
// only relevant to protect callback functions for "active" pools
|
|
22
|
-
IProductService private _productService;
|
|
37
|
+
IBundleService private _bundleService;
|
|
23
38
|
|
|
24
39
|
modifier onlyPoolService() {
|
|
25
40
|
require(
|
|
@@ -28,32 +43,39 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
|
28
43
|
_;
|
|
29
44
|
}
|
|
30
45
|
|
|
31
|
-
modifier onlyProductService() {
|
|
32
|
-
require(
|
|
33
|
-
msg.sender == address(_productService),
|
|
34
|
-
"ERROR:POL-002:NOT_PRODUCT_SERVICE");
|
|
35
|
-
_;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
46
|
constructor(
|
|
39
47
|
address registry,
|
|
40
48
|
NftId instanceNftId,
|
|
41
49
|
// TODO refactor into tokenNftId
|
|
42
50
|
address token,
|
|
43
|
-
bool
|
|
44
|
-
|
|
51
|
+
bool isInterceptor,
|
|
52
|
+
bool isConfirmingApplication,
|
|
53
|
+
UFixed collateralizationLevel,
|
|
54
|
+
Fee memory poolFee,
|
|
55
|
+
Fee memory stakingFee,
|
|
56
|
+
Fee memory performanceFee,
|
|
57
|
+
address initialOwner
|
|
45
58
|
)
|
|
46
|
-
|
|
59
|
+
Component(registry, instanceNftId, token, POOL(), isInterceptor, initialOwner)
|
|
47
60
|
{
|
|
48
|
-
|
|
61
|
+
_isConfirmingApplication = isConfirmingApplication;
|
|
49
62
|
// TODO add validation
|
|
50
63
|
_collateralizationLevel = collateralizationLevel;
|
|
64
|
+
_initialPoolFee = poolFee;
|
|
65
|
+
_initialStakingFee = stakingFee;
|
|
66
|
+
_initialPerformanceFee = performanceFee;
|
|
67
|
+
|
|
68
|
+
_tokenHandler = new TokenHandler(token);
|
|
51
69
|
|
|
52
70
|
_poolService = _instance.getPoolService();
|
|
53
|
-
_productService = _instance.getProductService();
|
|
71
|
+
// _productService = _instance.getProductService();
|
|
72
|
+
_bundleService = _instance.getBundleService();
|
|
73
|
+
|
|
74
|
+
_registerInterface(type(IPoolComponent).interfaceId);
|
|
54
75
|
}
|
|
55
76
|
|
|
56
77
|
function createBundle(
|
|
78
|
+
Fee memory fee,
|
|
57
79
|
uint256 initialAmount,
|
|
58
80
|
uint256 lifetime,
|
|
59
81
|
bytes memory filter
|
|
@@ -63,8 +85,9 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
|
63
85
|
returns(NftId bundleNftId)
|
|
64
86
|
{
|
|
65
87
|
address owner = msg.sender;
|
|
66
|
-
bundleNftId =
|
|
88
|
+
bundleNftId = _bundleService.createBundle(
|
|
67
89
|
owner,
|
|
90
|
+
fee,
|
|
68
91
|
initialAmount,
|
|
69
92
|
lifetime,
|
|
70
93
|
filter
|
|
@@ -107,14 +130,97 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
|
107
130
|
}
|
|
108
131
|
|
|
109
132
|
|
|
110
|
-
function
|
|
111
|
-
return
|
|
133
|
+
function isConfirmingApplication() external view override returns (bool isConfirmingApplication) {
|
|
134
|
+
return _isConfirmingApplication;
|
|
112
135
|
}
|
|
113
136
|
|
|
114
137
|
function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
|
|
115
138
|
return _collateralizationLevel;
|
|
116
139
|
}
|
|
117
140
|
|
|
141
|
+
function setFees(
|
|
142
|
+
Fee memory poolFee,
|
|
143
|
+
Fee memory stakingFee,
|
|
144
|
+
Fee memory performanceFee
|
|
145
|
+
)
|
|
146
|
+
external
|
|
147
|
+
onlyOwner
|
|
148
|
+
override
|
|
149
|
+
{
|
|
150
|
+
_poolService.setFees(poolFee, stakingFee, performanceFee);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function setBundleFee(
|
|
154
|
+
NftId bundleNftId,
|
|
155
|
+
Fee memory fee
|
|
156
|
+
)
|
|
157
|
+
external
|
|
158
|
+
override
|
|
159
|
+
// TODO add onlyBundleOwner
|
|
160
|
+
{
|
|
161
|
+
_bundleService.setBundleFee(bundleNftId, fee);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function lockBundle(
|
|
165
|
+
NftId bundleNftId
|
|
166
|
+
)
|
|
167
|
+
external
|
|
168
|
+
override
|
|
169
|
+
// TODO add onlyBundleOwner
|
|
170
|
+
{
|
|
171
|
+
_bundleService.lockBundle(bundleNftId);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function unlockBundle(
|
|
175
|
+
NftId bundleNftId
|
|
176
|
+
)
|
|
177
|
+
external
|
|
178
|
+
override
|
|
179
|
+
// TODO add onlyBundleOwner
|
|
180
|
+
{
|
|
181
|
+
_bundleService.unlockBundle(bundleNftId);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
|
|
185
|
+
InstanceReader reader = _instance.getInstanceReader();
|
|
186
|
+
return reader.getPoolSetupInfo(getNftId());
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// from IRegisterable
|
|
190
|
+
|
|
191
|
+
// TODO used only once, occupies space
|
|
192
|
+
// TODO do not use super
|
|
193
|
+
function getInitialInfo()
|
|
194
|
+
public
|
|
195
|
+
view
|
|
196
|
+
override (IRegisterable, Registerable)
|
|
197
|
+
returns (IRegistry.ObjectInfo memory, bytes memory)
|
|
198
|
+
{
|
|
199
|
+
(
|
|
200
|
+
IRegistry.ObjectInfo memory info,
|
|
201
|
+
) = super.getInitialInfo();
|
|
202
|
+
|
|
203
|
+
return (
|
|
204
|
+
info,
|
|
205
|
+
abi.encode(
|
|
206
|
+
getName(),
|
|
207
|
+
ISetup.PoolSetupInfo(
|
|
208
|
+
_productNftId,
|
|
209
|
+
_tokenHandler,
|
|
210
|
+
_collateralizationLevel,
|
|
211
|
+
_initialPoolFee,
|
|
212
|
+
_initialStakingFee,
|
|
213
|
+
_initialPerformanceFee,
|
|
214
|
+
false,
|
|
215
|
+
_isConfirmingApplication,
|
|
216
|
+
_wallet
|
|
217
|
+
)
|
|
218
|
+
)
|
|
219
|
+
);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Internals
|
|
223
|
+
|
|
118
224
|
function _underwrite(
|
|
119
225
|
NftId policyNftId,
|
|
120
226
|
bytes memory policyData,
|
|
@@ -133,6 +239,7 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
|
133
239
|
|
|
134
240
|
function _createBundle(
|
|
135
241
|
address bundleOwner,
|
|
242
|
+
Fee memory fee,
|
|
136
243
|
uint256 amount,
|
|
137
244
|
uint256 lifetime,
|
|
138
245
|
bytes calldata filter
|
|
@@ -140,35 +247,12 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
|
140
247
|
internal
|
|
141
248
|
returns(NftId bundleNftId)
|
|
142
249
|
{
|
|
143
|
-
bundleNftId =
|
|
250
|
+
bundleNftId = _bundleService.createBundle(
|
|
144
251
|
bundleOwner,
|
|
252
|
+
fee,
|
|
145
253
|
amount,
|
|
146
254
|
lifetime,
|
|
147
255
|
filter
|
|
148
256
|
);
|
|
149
257
|
}
|
|
150
|
-
|
|
151
|
-
// from pool component
|
|
152
|
-
function getStakingFee()
|
|
153
|
-
external
|
|
154
|
-
view
|
|
155
|
-
override
|
|
156
|
-
returns (Fee memory stakingFee)
|
|
157
|
-
{
|
|
158
|
-
return _instance.getPoolSetup(getNftId()).stakingFee;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
function getPerformanceFee()
|
|
162
|
-
external
|
|
163
|
-
view
|
|
164
|
-
override
|
|
165
|
-
returns (Fee memory performanceFee)
|
|
166
|
-
{
|
|
167
|
-
return _instance.getPoolSetup(getNftId()).performanceFee;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// from registerable
|
|
171
|
-
function getType() public pure override returns (ObjectType) {
|
|
172
|
-
return POOL();
|
|
173
|
-
}
|
|
174
258
|
}
|
|
@@ -1,42 +1,164 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity ^0.8.19;
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
|
5
|
+
|
|
6
|
+
import {IRisk} from "../instance/module/IRisk.sol";
|
|
7
|
+
import {IPolicyService} from "../instance/service/IPolicyService.sol";
|
|
5
8
|
import {IProductComponent} from "./IProductComponent.sol";
|
|
6
|
-
import {NftId} from "../types/NftId.sol";
|
|
7
|
-
import {
|
|
9
|
+
import {NftId, NftIdLib} from "../types/NftId.sol";
|
|
10
|
+
import {PRODUCT} from "../types/ObjectType.sol";
|
|
11
|
+
import {ReferralId} from "../types/Referral.sol";
|
|
12
|
+
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
|
13
|
+
import {StateId} from "../types/StateId.sol";
|
|
8
14
|
import {Timestamp} from "../types/Timestamp.sol";
|
|
9
15
|
import {Fee} from "../types/Fee.sol";
|
|
10
|
-
import {
|
|
16
|
+
import {Component} from "./Component.sol";
|
|
17
|
+
|
|
18
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
|
19
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
|
20
|
+
import {Registerable} from "../shared/Registerable.sol";
|
|
21
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
|
22
|
+
|
|
23
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
|
24
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
|
25
|
+
import {Pool} from "../components/Pool.sol";
|
|
26
|
+
import {Distribution} from "../components/Distribution.sol";
|
|
27
|
+
|
|
28
|
+
abstract contract Product is Component, IProductComponent {
|
|
29
|
+
using NftIdLib for NftId;
|
|
11
30
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
31
|
+
IPolicyService internal _policyService;
|
|
32
|
+
Pool internal _pool;
|
|
33
|
+
Distribution internal _distribution;
|
|
34
|
+
Fee internal _initialProductFee;
|
|
35
|
+
Fee internal _initialProcessingFee;
|
|
36
|
+
TokenHandler internal _tokenHandler;
|
|
37
|
+
|
|
38
|
+
NftId internal _poolNftId;
|
|
39
|
+
NftId internal _distributionNftId;
|
|
15
40
|
|
|
16
41
|
constructor(
|
|
17
42
|
address registry,
|
|
18
43
|
NftId instanceNftid,
|
|
19
44
|
address token,
|
|
20
|
-
|
|
21
|
-
|
|
45
|
+
bool isInterceptor,
|
|
46
|
+
address pool,
|
|
47
|
+
address distribution,
|
|
48
|
+
Fee memory productFee,
|
|
49
|
+
Fee memory processingFee,
|
|
50
|
+
address initialOwner
|
|
51
|
+
) Component(registry, instanceNftid, token, PRODUCT(), isInterceptor, initialOwner) {
|
|
22
52
|
// TODO add validation
|
|
23
|
-
|
|
24
|
-
_pool = pool;
|
|
53
|
+
_policyService = _instance.getPolicyService();
|
|
54
|
+
_pool = Pool(pool);
|
|
55
|
+
_distribution = Distribution(distribution);
|
|
56
|
+
_initialProductFee = productFee;
|
|
57
|
+
_initialProcessingFee = processingFee;
|
|
58
|
+
|
|
59
|
+
_tokenHandler = new TokenHandler(token);
|
|
60
|
+
|
|
61
|
+
_poolNftId = getRegistry().getNftId(address(_pool));
|
|
62
|
+
_distributionNftId = getRegistry().getNftId(address(_distribution));
|
|
63
|
+
|
|
64
|
+
_registerInterface(type(IProductComponent).interfaceId);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
function calculatePremium(
|
|
69
|
+
uint256 sumInsuredAmount,
|
|
70
|
+
RiskId riskId,
|
|
71
|
+
uint256 lifetime,
|
|
72
|
+
bytes memory applicationData,
|
|
73
|
+
NftId bundleNftId,
|
|
74
|
+
ReferralId referralId
|
|
75
|
+
)
|
|
76
|
+
external
|
|
77
|
+
view
|
|
78
|
+
override
|
|
79
|
+
returns (uint256 premiumAmount)
|
|
80
|
+
{
|
|
81
|
+
(premiumAmount,,,,) = _policyService.calculatePremium(
|
|
82
|
+
riskId,
|
|
83
|
+
sumInsuredAmount,
|
|
84
|
+
lifetime,
|
|
85
|
+
applicationData,
|
|
86
|
+
bundleNftId,
|
|
87
|
+
referralId
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
function calculateNetPremium(
|
|
93
|
+
uint256 sumInsuredAmount,
|
|
94
|
+
RiskId riskId,
|
|
95
|
+
uint256 lifetime,
|
|
96
|
+
bytes memory applicationData
|
|
97
|
+
)
|
|
98
|
+
external
|
|
99
|
+
view
|
|
100
|
+
virtual override
|
|
101
|
+
returns (uint256 netPremiumAmount)
|
|
102
|
+
{
|
|
103
|
+
// default 10% of sum insured
|
|
104
|
+
return sumInsuredAmount / 10;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
|
|
108
|
+
return RiskIdLib.toRiskId(riskName);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function _createRisk(
|
|
112
|
+
RiskId id,
|
|
113
|
+
bytes memory data
|
|
114
|
+
) internal {
|
|
115
|
+
_productService.createRisk(
|
|
116
|
+
id,
|
|
117
|
+
data
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function _updateRisk(
|
|
122
|
+
RiskId id,
|
|
123
|
+
bytes memory data
|
|
124
|
+
) internal {
|
|
125
|
+
_productService.updateRisk(
|
|
126
|
+
id,
|
|
127
|
+
data
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function _updateRiskState(
|
|
132
|
+
RiskId id,
|
|
133
|
+
StateId state
|
|
134
|
+
) internal {
|
|
135
|
+
_productService.updateRiskState(
|
|
136
|
+
id,
|
|
137
|
+
state
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
|
|
142
|
+
return _instance.getInstanceReader().getRiskInfo(id);
|
|
25
143
|
}
|
|
26
144
|
|
|
27
145
|
function _createApplication(
|
|
28
146
|
address applicationOwner,
|
|
147
|
+
RiskId riskId,
|
|
29
148
|
uint256 sumInsuredAmount,
|
|
30
|
-
uint256 premiumAmount,
|
|
31
149
|
uint256 lifetime,
|
|
32
|
-
|
|
150
|
+
bytes memory applicationData,
|
|
151
|
+
NftId bundleNftId,
|
|
152
|
+
ReferralId referralId
|
|
33
153
|
) internal returns (NftId nftId) {
|
|
34
|
-
nftId =
|
|
154
|
+
nftId = _policyService.createApplication(
|
|
35
155
|
applicationOwner,
|
|
156
|
+
riskId,
|
|
36
157
|
sumInsuredAmount,
|
|
37
|
-
premiumAmount,
|
|
38
158
|
lifetime,
|
|
39
|
-
|
|
159
|
+
applicationData,
|
|
160
|
+
bundleNftId,
|
|
161
|
+
referralId
|
|
40
162
|
);
|
|
41
163
|
}
|
|
42
164
|
|
|
@@ -47,7 +169,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
|
47
169
|
)
|
|
48
170
|
internal
|
|
49
171
|
{
|
|
50
|
-
|
|
172
|
+
_policyService.underwrite(
|
|
51
173
|
policyNftId,
|
|
52
174
|
requirePremiumPayment,
|
|
53
175
|
activateAt);
|
|
@@ -59,7 +181,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
|
59
181
|
)
|
|
60
182
|
internal
|
|
61
183
|
{
|
|
62
|
-
|
|
184
|
+
_policyService.collectPremium(
|
|
63
185
|
policyNftId,
|
|
64
186
|
activateAt);
|
|
65
187
|
}
|
|
@@ -70,48 +192,104 @@ contract Product is BaseComponent, IProductComponent {
|
|
|
70
192
|
)
|
|
71
193
|
internal
|
|
72
194
|
{
|
|
73
|
-
|
|
195
|
+
_policyService.activate(
|
|
74
196
|
policyNftId,
|
|
75
197
|
activateAt);
|
|
76
198
|
}
|
|
77
199
|
|
|
200
|
+
function _close(
|
|
201
|
+
NftId policyNftId
|
|
202
|
+
)
|
|
203
|
+
internal
|
|
204
|
+
{
|
|
205
|
+
_policyService.close(policyNftId);
|
|
206
|
+
}
|
|
207
|
+
|
|
78
208
|
function getPoolNftId() external view override returns (NftId poolNftId) {
|
|
79
|
-
return
|
|
209
|
+
return getRegistry().getNftId(address(_pool));
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
function getDistributionNftId() external view override returns (NftId distributionNftId) {
|
|
213
|
+
return getRegistry().getNftId(address(_distribution));
|
|
80
214
|
}
|
|
81
215
|
|
|
82
216
|
// from product component
|
|
83
217
|
function setFees(
|
|
84
|
-
Fee memory
|
|
218
|
+
Fee memory productFee,
|
|
85
219
|
Fee memory processingFee
|
|
86
220
|
)
|
|
87
221
|
external
|
|
88
222
|
onlyOwner
|
|
89
223
|
override
|
|
90
224
|
{
|
|
91
|
-
_productService.setFees(
|
|
225
|
+
_productService.setFees(productFee, processingFee);
|
|
92
226
|
}
|
|
93
227
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
view
|
|
98
|
-
override
|
|
99
|
-
returns (Fee memory policyFee)
|
|
100
|
-
{
|
|
101
|
-
return _instance.getProductSetup(getNftId()).policyFee;
|
|
228
|
+
function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
|
229
|
+
InstanceReader reader = _instance.getInstanceReader();
|
|
230
|
+
return reader.getProductSetupInfo(getNftId());
|
|
102
231
|
}
|
|
103
232
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
233
|
+
// from IRegisterable
|
|
234
|
+
|
|
235
|
+
function getInitialInfo()
|
|
236
|
+
public
|
|
237
|
+
view
|
|
238
|
+
override (IRegisterable, Registerable)
|
|
239
|
+
returns (IRegistry.ObjectInfo memory, bytes memory)
|
|
109
240
|
{
|
|
110
|
-
|
|
111
|
-
|
|
241
|
+
// from Registerable
|
|
242
|
+
(
|
|
243
|
+
IRegistry.ObjectInfo memory productInfo,
|
|
244
|
+
bytes memory data
|
|
245
|
+
) = super.getInitialInfo();
|
|
246
|
+
|
|
247
|
+
// TODO read pool & distribution fees
|
|
248
|
+
// 1) from pool -> the only option -> pool must be registered first?
|
|
249
|
+
// 2) from instance -> all fees are set into instance at product registration which is ongoing here
|
|
250
|
+
// checks are done in registryProduct() where THIS function is called
|
|
251
|
+
//require(getRegistry().getObjectInfo(_poolNftId).objectType == POOL(), "POOL_NOT_REGISTERED");
|
|
252
|
+
//require(getRegistry().getObjectInfo(_distributionNftId).objectType == DISTRIBUTION(), "DISTRIBUTION_NOT_REGISTERED");
|
|
253
|
+
|
|
254
|
+
// from PoolComponent
|
|
255
|
+
(
|
|
256
|
+
,
|
|
257
|
+
bytes memory poolData
|
|
258
|
+
) = _pool.getInitialInfo();
|
|
259
|
+
|
|
260
|
+
(
|
|
261
|
+
, ISetup.PoolSetupInfo memory poolSetupInfo
|
|
262
|
+
) = abi.decode(poolData, (string, ISetup.PoolSetupInfo));
|
|
112
263
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
264
|
+
// from DistributionComponent
|
|
265
|
+
(
|
|
266
|
+
,
|
|
267
|
+
bytes memory distributionData
|
|
268
|
+
) = _distribution.getInitialInfo();
|
|
269
|
+
|
|
270
|
+
(
|
|
271
|
+
, ISetup.DistributionSetupInfo memory distributionSetupInfo
|
|
272
|
+
) = abi.decode(distributionData, (string, ISetup.DistributionSetupInfo));
|
|
273
|
+
|
|
274
|
+
return (
|
|
275
|
+
productInfo,
|
|
276
|
+
abi.encode(
|
|
277
|
+
getName(),
|
|
278
|
+
ISetup.ProductSetupInfo(
|
|
279
|
+
_token,
|
|
280
|
+
_tokenHandler,
|
|
281
|
+
_distributionNftId,
|
|
282
|
+
_poolNftId,
|
|
283
|
+
distributionSetupInfo.distributionFee,
|
|
284
|
+
_initialProductFee,
|
|
285
|
+
_initialProcessingFee,
|
|
286
|
+
poolSetupInfo.poolFee,
|
|
287
|
+
poolSetupInfo.stakingFee,
|
|
288
|
+
poolSetupInfo.performanceFee,
|
|
289
|
+
false,
|
|
290
|
+
_wallet
|
|
291
|
+
)
|
|
292
|
+
)
|
|
293
|
+
);
|
|
116
294
|
}
|
|
117
295
|
}
|
|
@@ -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
|
+
|