@etherisc/gif-next 0.0.2-cd89a0b-062 → 0.0.2-cdac553-411
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 +108 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +116 -2
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +256 -31
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +106 -3
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +24 -163
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -225
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -216
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +336 -65
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +314 -41
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +325 -1744
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +480 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2300 -1340
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1388 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +891 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +492 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +95 -2
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.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 +178 -41
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +156 -25
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +436 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +81 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +80 -3
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +80 -3
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -3
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +174 -27
- 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/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +294 -99
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +203 -18
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +249 -137
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +395 -43
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +107 -42
- 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 +1 -1
- 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 +80 -3
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/IService.sol/IService.json} +76 -35
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +32 -6
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +21 -16
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +120 -6
- 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} +137 -39
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +106 -94
- 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 +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- 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 +120 -6
- 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 +142 -14
- 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 +18 -2
- 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 +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +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 +2 -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 +16 -4
- package/contracts/components/Distribution.sol +23 -12
- package/contracts/components/IBaseComponent.sol +9 -3
- package/contracts/components/IDistributionComponent.sol +5 -6
- package/contracts/components/IPoolComponent.sol +1 -4
- package/contracts/components/IProductComponent.sol +3 -7
- package/contracts/components/Pool.sol +28 -27
- package/contracts/components/Product.sol +44 -46
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/AccessManagedSimple.sol +115 -0
- package/contracts/instance/AccessManagerSimple.sol +692 -0
- package/contracts/instance/IAccessManagerSimple.sol +391 -0
- package/contracts/instance/IInstance.sol +32 -47
- package/contracts/instance/IInstanceService.sol +30 -0
- package/contracts/instance/Instance.sol +423 -65
- package/contracts/instance/InstanceAccessManager.sol +288 -0
- package/contracts/instance/InstanceReader.sol +306 -0
- package/contracts/instance/InstanceService.sol +180 -0
- package/contracts/instance/InstanceServiceManager.sol +56 -0
- package/contracts/instance/base/ComponentServiceBase.sol +4 -12
- 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 +44 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ComponentOwnerService.sol +145 -100
- package/contracts/instance/service/DistributionService.sol +66 -15
- package/contracts/instance/service/DistributionServiceManager.sol +53 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -1
- package/contracts/instance/service/IDistributionService.sol +1 -1
- package/contracts/instance/service/IPoolService.sol +1 -1
- package/contracts/instance/service/IProductService.sol +3 -3
- package/contracts/instance/service/PoolService.sol +108 -46
- package/contracts/instance/service/PoolServiceManager.sol +53 -0
- package/contracts/registry/ChainNft.sol +40 -25
- package/contracts/registry/IRegistry.sol +48 -27
- package/contracts/registry/IRegistryService.sol +16 -12
- package/contracts/registry/Registry.sol +167 -168
- package/contracts/registry/RegistryService.sol +160 -136
- package/contracts/registry/RegistryServiceManager.sol +38 -10
- package/contracts/registry/TokenRegistry.sol +111 -0
- package/contracts/shared/ERC165.sol +7 -3
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +3 -8
- package/contracts/{instance/base → shared}/IService.sol +3 -3
- package/contracts/shared/NftOwnable.sol +83 -34
- package/contracts/shared/ProxyManager.sol +3 -12
- package/contracts/shared/Registerable.sol +15 -42
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +54 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
- package/contracts/shared/Versionable.sol +3 -3
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRoleId.sol +1 -1
- package/contracts/test/TestService.sol +3 -5
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +3 -3
- package/contracts/types/Key32.sol +8 -3
- 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 +60 -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 +4 -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 -164
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
- 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 -638
- 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 -638
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -964
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
- 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 -445
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -602
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -632
- 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/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/InstanceBase.sol +0 -89
- package/contracts/instance/base/ModuleBase.sol +0 -57
- package/contracts/instance/base/ServiceBase.sol +0 -43
- 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 -71
- 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 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -95
- 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 -84
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
- package/contracts/instance/service/ProductService.sol +0 -509
- package/contracts/registry/IChainNft.sol +0 -22
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/test/TestDistribution.sol +0 -22
- package/contracts/test/TestPool.sol +0 -27
- package/contracts/test/TestProduct.sol +0 -74
- package/contracts/types/ReferralId.sol +0 -48
@@ -0,0 +1,44 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {Fee} from "../../types/Fee.sol";
|
7
|
+
import {NftId} from "../../types/NftId.sol";
|
8
|
+
import {LibNftIdSet} from "../../types/NftIdSet.sol";
|
9
|
+
import {UFixed} from "../../types/UFixed.sol";
|
10
|
+
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
11
|
+
|
12
|
+
interface ISetup {
|
13
|
+
struct ProductSetupInfo {
|
14
|
+
IERC20Metadata token;
|
15
|
+
TokenHandler tokenHandler;
|
16
|
+
NftId distributionNftId;
|
17
|
+
NftId poolNftId;
|
18
|
+
Fee distributionFee; // default distribution fee (no referral id)
|
19
|
+
Fee productFee; // product fee on net premium
|
20
|
+
Fee processingFee; // product fee on payout amounts
|
21
|
+
Fee poolFee; // pool fee on net premium
|
22
|
+
Fee stakingFee; // pool fee on staked capital from investor
|
23
|
+
Fee performanceFee; // pool fee on profits from capital investors
|
24
|
+
}
|
25
|
+
|
26
|
+
struct DistributionSetupInfo {
|
27
|
+
NftId productNftId;
|
28
|
+
TokenHandler tokenHandler;
|
29
|
+
Fee distributionFee; // default distribution fee (no referral id)
|
30
|
+
bool isIntercepting; // intercepts nft transfers (for distributors)
|
31
|
+
address wallet;
|
32
|
+
}
|
33
|
+
|
34
|
+
struct PoolSetupInfo {
|
35
|
+
NftId productNftId;
|
36
|
+
TokenHandler tokenHandler;
|
37
|
+
UFixed collateralizationLevel;
|
38
|
+
Fee poolFee; // pool fee on net premium
|
39
|
+
Fee stakingFee; // pool fee on staked capital from investor
|
40
|
+
Fee performanceFee; // pool fee on profits from capital investors
|
41
|
+
bool isIntercepting; // intercepts nft transfers (for bundles)
|
42
|
+
address wallet;
|
43
|
+
}
|
44
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {Fee} from "../../types/Fee.sol";
|
7
|
+
import {NftId} from "../../types/NftId.sol";
|
8
|
+
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
9
|
+
|
10
|
+
interface ITreasury {
|
11
|
+
struct TreasuryInfo {
|
12
|
+
IERC20Metadata token;
|
13
|
+
TokenHandler tokenHandler;
|
14
|
+
NftId distributionNftId;
|
15
|
+
NftId poolNftId;
|
16
|
+
Fee distributionFee; // default distribution fee (no referral id)
|
17
|
+
Fee productFee; // product fee on net premium
|
18
|
+
Fee processingFee; // product fee on payout amounts
|
19
|
+
Fee poolFee; // pool fee on net premium
|
20
|
+
Fee stakingFee; // pool fee on staked capital from investor
|
21
|
+
Fee performanceFee; // pool fee on profits from capital investors
|
22
|
+
}
|
23
|
+
}
|
@@ -1,14 +1,14 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC20Metadata} from "@
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
6
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
7
7
|
import {IInstance} from "../IInstance.sol";
|
8
8
|
|
9
|
-
import {ITreasury
|
10
|
-
import {TreasuryModule} from "../module/
|
11
|
-
import {
|
9
|
+
import {ITreasury} from "../module/ITreasury.sol";
|
10
|
+
// import {TreasuryModule} from "../module/TreasuryModule.sol";
|
11
|
+
import {ISetup} from "../module/ISetup.sol";
|
12
12
|
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
13
13
|
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
14
14
|
import {IKeyValueStore} from "../../instance/base/IKeyValueStore.sol";
|
@@ -22,20 +22,20 @@ import {Key32} from "../../types/Key32.sol";
|
|
22
22
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
23
23
|
import {Fee} from "../../types/Fee.sol";
|
24
24
|
import {Version, VersionLib} from "../../types/Version.sol";
|
25
|
-
import {UFixed,
|
25
|
+
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
26
26
|
|
27
27
|
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
28
28
|
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
29
29
|
import {IProductComponent} from "../../components/IProductComponent.sol";
|
30
|
-
import {IService} from "
|
30
|
+
import {IService} from "../../shared/IService.sol";
|
31
31
|
import {IComponentOwnerService} from "./IComponentOwnerService.sol";
|
32
|
-
import {
|
33
|
-
import {IPool, IPoolModule} from "../module/
|
32
|
+
import {Service} from "../../shared/Service.sol";
|
33
|
+
// import {IPool, IPoolModule} from "../module/IPoolModule.sol";
|
34
34
|
|
35
35
|
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
36
36
|
|
37
37
|
contract ComponentOwnerService is
|
38
|
-
|
38
|
+
Service,
|
39
39
|
IComponentOwnerService
|
40
40
|
{
|
41
41
|
using NftIdLib for NftId;
|
@@ -64,11 +64,11 @@ contract ComponentOwnerService is
|
|
64
64
|
address initialOwner
|
65
65
|
)
|
66
66
|
{
|
67
|
-
|
67
|
+
_initializeService(registry, initialOwner);
|
68
68
|
_registerInterface(type(IComponentOwnerService).interfaceId);
|
69
69
|
}
|
70
70
|
|
71
|
-
function getName() public pure override(IService,
|
71
|
+
function getName() public pure override(IService, Service) returns(string memory name) {
|
72
72
|
return NAME;
|
73
73
|
}
|
74
74
|
|
@@ -94,44 +94,87 @@ contract ComponentOwnerService is
|
|
94
94
|
return IRegistryService(service);
|
95
95
|
}
|
96
96
|
|
97
|
-
|
98
|
-
|
99
|
-
IBaseComponent component,
|
100
|
-
ObjectType componentType
|
97
|
+
function registerProduct(
|
98
|
+
IBaseComponent product
|
101
99
|
) external returns (NftId nftId) {
|
102
100
|
|
103
101
|
// TODO some info parameters from component and from register may differ -> getObjectInfo() after registration?
|
104
102
|
(
|
105
103
|
IRegistry.ObjectInfo memory info,
|
106
104
|
bytes memory data
|
107
|
-
) = getRegistryService().
|
105
|
+
) = getRegistryService().registerProduct(
|
106
|
+
product,
|
107
|
+
msg.sender);
|
108
108
|
|
109
109
|
NftId instanceNftId = info.parentNftId;
|
110
|
-
address
|
111
|
-
IInstance instance = IInstance(
|
112
|
-
|
113
|
-
RoleId typeRole = getRoleForType(
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
info.nftId,
|
122
|
-
instanceNftId,
|
123
|
-
instance,
|
124
|
-
data
|
125
|
-
);
|
126
|
-
} else if (componentType == POOL()) {
|
127
|
-
_registerPool(
|
128
|
-
info.nftId,
|
110
|
+
address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
|
111
|
+
IInstance instance = IInstance(instanceAddress);
|
112
|
+
|
113
|
+
RoleId typeRole = getRoleForType(PRODUCT());
|
114
|
+
// TODO refactor to use access manager infra
|
115
|
+
// if(instance.hasRole(typeRole, msg.sender) == false) {
|
116
|
+
// revert MissingTypeRole();
|
117
|
+
// }
|
118
|
+
|
119
|
+
_registerProduct(
|
120
|
+
info.nftId,
|
129
121
|
instanceNftId,
|
130
122
|
instance,
|
131
123
|
data
|
132
|
-
|
133
|
-
|
134
|
-
|
124
|
+
);
|
125
|
+
}
|
126
|
+
|
127
|
+
function registerPool(
|
128
|
+
IBaseComponent pool
|
129
|
+
) external returns (NftId nftId) {
|
130
|
+
|
131
|
+
// TODO some info parameters from component and from register may differ -> getObjectInfo() after registration?
|
132
|
+
(
|
133
|
+
IRegistry.ObjectInfo memory info,
|
134
|
+
bytes memory data
|
135
|
+
) = getRegistryService().registerPool(
|
136
|
+
pool,
|
137
|
+
msg.sender);
|
138
|
+
|
139
|
+
NftId instanceNftId = info.parentNftId;
|
140
|
+
address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
|
141
|
+
IInstance instance = IInstance(instanceAddress);
|
142
|
+
|
143
|
+
RoleId typeRole = getRoleForType(POOL());
|
144
|
+
// TODO refactor to use access manager infra
|
145
|
+
// if(instance.hasRole(typeRole, msg.sender) == false) {
|
146
|
+
// revert MissingTypeRole();
|
147
|
+
// }
|
148
|
+
|
149
|
+
_registerPool(
|
150
|
+
info.nftId,
|
151
|
+
instanceNftId,
|
152
|
+
instance,
|
153
|
+
data
|
154
|
+
);
|
155
|
+
}
|
156
|
+
|
157
|
+
function registerDistribution(
|
158
|
+
IBaseComponent distribution
|
159
|
+
) external returns (NftId nftId) {
|
160
|
+
|
161
|
+
// TODO some info parameters from component and from register may differ -> getObjectInfo() after registration?
|
162
|
+
(
|
163
|
+
IRegistry.ObjectInfo memory info,
|
164
|
+
bytes memory data
|
165
|
+
) = getRegistryService().registerDistribution(
|
166
|
+
distribution,
|
167
|
+
msg.sender);
|
168
|
+
|
169
|
+
NftId instanceNftId = info.parentNftId;
|
170
|
+
address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
|
171
|
+
IInstance instance = IInstance(instanceAddress);
|
172
|
+
|
173
|
+
RoleId typeRole = getRoleForType(DISTRIBUTION());
|
174
|
+
// TODO refactor to use access manager infra
|
175
|
+
// if(instance.hasRole(typeRole, msg.sender) == false) {
|
176
|
+
// revert MissingTypeRole();
|
177
|
+
// }
|
135
178
|
}
|
136
179
|
|
137
180
|
function lock(
|
@@ -141,7 +184,7 @@ contract ComponentOwnerService is
|
|
141
184
|
IInstance instance = component.getInstance();
|
142
185
|
NftId nftId = component.getNftId();
|
143
186
|
Key32 key = nftId.toKey32(COMPONENT());
|
144
|
-
instance.updateState(key, PAUSED());
|
187
|
+
// instance.updateState(key, PAUSED());
|
145
188
|
}
|
146
189
|
|
147
190
|
function unlock(
|
@@ -151,7 +194,7 @@ contract ComponentOwnerService is
|
|
151
194
|
IInstance instance = component.getInstance();
|
152
195
|
NftId nftId = component.getNftId();
|
153
196
|
Key32 key = nftId.toKey32(COMPONENT());
|
154
|
-
instance.updateState(key, ACTIVE());
|
197
|
+
// instance.updateState(key, ACTIVE());
|
155
198
|
}
|
156
199
|
|
157
200
|
// Internals
|
@@ -164,58 +207,60 @@ contract ComponentOwnerService is
|
|
164
207
|
)
|
165
208
|
internal
|
166
209
|
{
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
//
|
194
|
-
//
|
195
|
-
//
|
196
|
-
//
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
//
|
208
|
-
//
|
209
|
-
|
210
|
-
//
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
210
|
+
// TODO change treasury info to product setup info
|
211
|
+
(ISetup.ProductSetupInfo memory info) = abi.decode(data, (ISetup.ProductSetupInfo));
|
212
|
+
// (
|
213
|
+
// ITreasury.TreasuryInfo memory info,
|
214
|
+
// address wallet
|
215
|
+
// ) = abi.decode(data, (ITreasury.TreasuryInfo, address));
|
216
|
+
|
217
|
+
// IRegistry _registry = getRegistry();
|
218
|
+
|
219
|
+
// if(wallet == address(0)) {
|
220
|
+
// revert WalletIsZero();
|
221
|
+
// }
|
222
|
+
|
223
|
+
// IRegistry.ObjectInfo memory tokenInfo = _registry.getObjectInfo(address(info.token));
|
224
|
+
|
225
|
+
// if(tokenInfo.objectType != TOKEN()) {
|
226
|
+
// revert InvalidToken();
|
227
|
+
// }
|
228
|
+
|
229
|
+
// IRegistry.ObjectInfo memory poolInfo = _registry.getObjectInfo(info.poolNftId);
|
230
|
+
|
231
|
+
// if(poolInfo.objectType != POOL()) {
|
232
|
+
// revert InvalidPool();
|
233
|
+
// }
|
234
|
+
|
235
|
+
// if(poolInfo.parentNftId != instanceNftId) {
|
236
|
+
// revert InvalidPoolsInstance();
|
237
|
+
// }
|
238
|
+
// // TODO pool have the same token
|
239
|
+
// //ITreasury.PoolSetup memory poolSetup = instance.getPoolSetup(info.poolNftId);
|
240
|
+
// //require(tokenInfo.objectAddress == address(poolSetup.token), "ERROR:COS-018:PRODUCT_POOL_TOKEN_MISMATCH");
|
241
|
+
// // TODO pool is not linked
|
242
|
+
|
243
|
+
// IRegistry.ObjectInfo memory distributionInfo = _registry.getObjectInfo(info.distributionNftId);
|
244
|
+
|
245
|
+
// if(distributionInfo.objectType != DISTRIBUTION()) {
|
246
|
+
// revert InvalidDistribution();
|
247
|
+
// }
|
248
|
+
|
249
|
+
// if(distributionInfo.parentNftId != instanceNftId) {
|
250
|
+
// revert InvalidDistributionsInstance();
|
251
|
+
// }
|
252
|
+
// // TODO distribution have the same token
|
253
|
+
// // TODO distribution is not linked
|
254
|
+
|
255
|
+
// // component module
|
256
|
+
// instance.registerComponent(
|
257
|
+
// nftId,
|
258
|
+
// info.token,
|
259
|
+
// wallet // TODO move wallet into TreasuryInfo?
|
260
|
+
// );
|
216
261
|
|
217
262
|
// treasury module
|
218
|
-
instance.
|
263
|
+
instance.createProductSetup(
|
219
264
|
nftId,
|
220
265
|
info
|
221
266
|
);
|
@@ -230,13 +275,13 @@ contract ComponentOwnerService is
|
|
230
275
|
internal
|
231
276
|
{
|
232
277
|
(
|
233
|
-
|
278
|
+
ISetup.PoolSetupInfo memory info,
|
234
279
|
address wallet,
|
235
280
|
IERC20Metadata token,
|
236
281
|
/*poolFee*/,
|
237
282
|
/*stakingFee*/,
|
238
283
|
/*performanceFee*/
|
239
|
-
) = abi.decode(data, (
|
284
|
+
) = abi.decode(data, (ISetup.PoolSetupInfo, address, IERC20Metadata, Fee, Fee, Fee));
|
240
285
|
|
241
286
|
IRegistry _registry = getRegistry();
|
242
287
|
|
@@ -250,21 +295,21 @@ contract ComponentOwnerService is
|
|
250
295
|
revert InvalidToken();
|
251
296
|
}
|
252
297
|
|
253
|
-
if(
|
298
|
+
if(UFixedLib.eqz(info.collateralizationLevel)) {
|
254
299
|
revert CollateralizationLevelIsZero();
|
255
300
|
}
|
256
301
|
|
257
302
|
// TODO add more validations
|
258
303
|
|
259
|
-
// component module
|
260
|
-
instance.registerComponent(
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
);
|
304
|
+
// // component module
|
305
|
+
// instance.registerComponent(
|
306
|
+
// nftId,
|
307
|
+
// token,
|
308
|
+
// wallet
|
309
|
+
// );
|
265
310
|
|
266
311
|
// pool module
|
267
|
-
instance.
|
312
|
+
instance.createPoolSetup(
|
268
313
|
nftId,
|
269
314
|
info
|
270
315
|
);
|
@@ -2,53 +2,104 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
|
+
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
5
6
|
import {IInstance} from "../../instance/IInstance.sol";
|
6
|
-
import {
|
7
|
+
import {InstanceReader} from "../../instance/InstanceReader.sol";
|
8
|
+
import {ISetup} from "../../instance/module/ISetup.sol";
|
9
|
+
import {ITreasury} from "../../instance/module/ITreasury.sol";
|
7
10
|
|
8
|
-
import {NftId} from "../../types/NftId.sol";
|
11
|
+
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
9
12
|
import {Fee} from "../../types/Fee.sol";
|
13
|
+
import {DISTRIBUTION_OWNER_ROLE} from "../../types/RoleId.sol";
|
14
|
+
import {KEEP_STATE} from "../../types/StateId.sol";
|
10
15
|
import {DISTRIBUTION} from "../../types/ObjectType.sol";
|
11
16
|
import {Version, VersionLib} from "../../types/Version.sol";
|
12
17
|
|
13
18
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
14
19
|
import {Versionable} from "../../shared/Versionable.sol";
|
15
20
|
|
16
|
-
import {IService} from "
|
17
|
-
import {
|
21
|
+
import {IService} from "../../shared/IService.sol";
|
22
|
+
import {Service} from "../../shared/Service.sol";
|
18
23
|
import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
|
19
24
|
import {IDistributionService} from "./IDistributionService.sol";
|
25
|
+
import {Distribution} from "../../components/Distribution.sol";
|
26
|
+
import {InstanceService} from "../InstanceService.sol";
|
27
|
+
import {Instance} from "../Instance.sol";
|
28
|
+
import {INftOwnable} from "../../shared/INftOwnable.sol";
|
29
|
+
|
30
|
+
string constant DISTRIBUTION_SERVICE_NAME = "DistributionService";
|
20
31
|
|
21
32
|
contract DistributionService is
|
22
33
|
ComponentServiceBase,
|
23
34
|
IDistributionService
|
24
35
|
{
|
36
|
+
using NftIdLib for NftId;
|
37
|
+
|
25
38
|
string public constant NAME = "DistributionService";
|
26
39
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
40
|
+
address internal _registryAddress;
|
41
|
+
InstanceService internal _instanceService;
|
42
|
+
|
43
|
+
function _initialize(
|
44
|
+
address owner,
|
45
|
+
bytes memory data
|
46
|
+
)
|
47
|
+
internal
|
48
|
+
initializer
|
49
|
+
virtual override
|
32
50
|
{
|
51
|
+
address initialOwner = address(0);
|
52
|
+
(_registryAddress, initialOwner) = abi.decode(data, (address, address));
|
53
|
+
|
54
|
+
IRegistry registry = IRegistry(_registryAddress);
|
55
|
+
_instanceService = InstanceService(registry.getServiceAddress("InstanceService", getMajorVersion()));
|
56
|
+
|
57
|
+
_initializeService(_registryAddress, initialOwner);
|
58
|
+
|
59
|
+
_registerInterface(type(IService).interfaceId);
|
33
60
|
_registerInterface(type(IDistributionService).interfaceId);
|
34
61
|
}
|
35
62
|
|
36
63
|
|
37
|
-
function getName() public pure override(IService,
|
64
|
+
function getName() public pure override(IService, Service) returns(string memory name) {
|
38
65
|
return NAME;
|
39
66
|
}
|
40
67
|
|
68
|
+
function register(address distributionComponentAddress)
|
69
|
+
external
|
70
|
+
returns (NftId distributionNftId)
|
71
|
+
{
|
72
|
+
address componentOwner = msg.sender;
|
73
|
+
Distribution distribution = Distribution(distributionComponentAddress);
|
74
|
+
IInstance instance = distribution.getInstance();
|
75
|
+
INftOwnable nftOwnable = INftOwnable(address(instance));
|
76
|
+
|
77
|
+
require(_instanceService.hasRole(componentOwner, DISTRIBUTION_OWNER_ROLE(), nftOwnable.getNftId()), "ERROR:DIS-001:NOT_DISTRIBUTION_OWNER_ROLE");
|
78
|
+
|
79
|
+
IRegistryService registryService = getRegistryService();
|
80
|
+
(IRegistry.ObjectInfo memory distributionObjInfo, ) = registryService.registerDistribution(
|
81
|
+
distribution,
|
82
|
+
componentOwner
|
83
|
+
);
|
84
|
+
distributionNftId = distributionObjInfo.nftId;
|
85
|
+
|
86
|
+
ISetup.DistributionSetupInfo memory initialSetup = distribution.getInitialSetupInfo();
|
87
|
+
instance.createDistributionSetup(distributionNftId, initialSetup);
|
88
|
+
}
|
89
|
+
|
41
90
|
function setFees(
|
42
91
|
Fee memory distributionFee
|
43
92
|
)
|
44
93
|
external
|
45
94
|
override
|
46
95
|
{
|
47
|
-
(IRegistry.ObjectInfo memory
|
96
|
+
(IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(DISTRIBUTION());
|
97
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
98
|
+
NftId distributionNftId = info.nftId;
|
48
99
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
instance.
|
100
|
+
ISetup.DistributionSetupInfo memory distSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
|
101
|
+
distSetupInfo.distributionFee = distributionFee;
|
102
|
+
|
103
|
+
instance.updateDistributionSetup(distributionNftId, distSetupInfo, KEEP_STATE());
|
53
104
|
}
|
54
105
|
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../../shared/ProxyManager.sol";
|
6
|
+
import {DistributionService} from "./DistributionService.sol";
|
7
|
+
import {Registry} from "../../registry/Registry.sol";
|
8
|
+
import {RegistryService} from "../../registry/RegistryService.sol";
|
9
|
+
import {VersionLib} from "../../types/Version.sol";
|
10
|
+
|
11
|
+
contract DistributionServiceManager is ProxyManager {
|
12
|
+
|
13
|
+
DistributionService private _distributionService;
|
14
|
+
|
15
|
+
/// @dev initializes proxy manager with distribution service implementation and deploys instance
|
16
|
+
constructor(
|
17
|
+
address registryAddress
|
18
|
+
)
|
19
|
+
ProxyManager()
|
20
|
+
{
|
21
|
+
DistributionService distSrv = new DistributionService();
|
22
|
+
bytes memory data = abi.encode(registryAddress, address(this));
|
23
|
+
IVersionable versionable = deploy(
|
24
|
+
address(distSrv),
|
25
|
+
data);
|
26
|
+
|
27
|
+
_distributionService = DistributionService(address(versionable));
|
28
|
+
|
29
|
+
Registry registry = Registry(registryAddress);
|
30
|
+
address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
|
31
|
+
RegistryService registryService = RegistryService(registryServiceAddress);
|
32
|
+
|
33
|
+
registryService.registerService(_distributionService);
|
34
|
+
|
35
|
+
// link ownership of instance service manager ot nft owner of instance service
|
36
|
+
_linkToNftOwnable(
|
37
|
+
address(registryAddress),
|
38
|
+
address(_distributionService));
|
39
|
+
|
40
|
+
// implies that after this constructor call only upgrade functionality is available
|
41
|
+
_isDeployed = true;
|
42
|
+
}
|
43
|
+
|
44
|
+
//--- view functions ----------------------------------------------------//
|
45
|
+
function getDistributionService()
|
46
|
+
external
|
47
|
+
view
|
48
|
+
returns (DistributionService distributionService)
|
49
|
+
{
|
50
|
+
return _distributionService;
|
51
|
+
}
|
52
|
+
|
53
|
+
}
|
@@ -5,7 +5,7 @@ import {NftId} from "../../types/NftId.sol";
|
|
5
5
|
import {ObjectType} from "../../types/ObjectType.sol";
|
6
6
|
import {RoleId} from "../../types/RoleId.sol";
|
7
7
|
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
8
|
-
import {IService} from "
|
8
|
+
import {IService} from "../../shared/IService.sol";
|
9
9
|
|
10
10
|
// TODO rename to registry service
|
11
11
|
interface IComponentOwnerService is IService {
|
@@ -3,7 +3,7 @@ pragma solidity ^0.8.19;
|
|
3
3
|
|
4
4
|
import {NftId} from "../../types/NftId.sol";
|
5
5
|
import {Fee} from "../../types/Fee.sol";
|
6
|
-
import {IService} from "
|
6
|
+
import {IService} from "../../shared/IService.sol";
|
7
7
|
|
8
8
|
interface IDistributionService is IService {
|
9
9
|
function setFees(
|
@@ -3,7 +3,7 @@ pragma solidity ^0.8.19;
|
|
3
3
|
|
4
4
|
import {NftId} from "../../types/NftId.sol";
|
5
5
|
import {Fee} from "../../types/Fee.sol";
|
6
|
-
import {IService} from "
|
6
|
+
import {IService} from "../../shared/IService.sol";
|
7
7
|
|
8
8
|
interface IPoolService is IService {
|
9
9
|
function setFees(
|
@@ -1,11 +1,11 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {IRisk} from "../module/
|
5
|
-
import {IService} from "
|
4
|
+
import {IRisk} from "../module/IRisk.sol";
|
5
|
+
import {IService} from "../../shared/IService.sol";
|
6
6
|
|
7
7
|
import {NftId} from "../../types/NftId.sol";
|
8
|
-
import {ReferralId} from "../../types/
|
8
|
+
import {ReferralId} from "../../types/Referral.sol";
|
9
9
|
import {RiskId} from "../../types/RiskId.sol";
|
10
10
|
import {StateId} from "../../types/StateId.sol";
|
11
11
|
import {Timestamp} from "../../types/Timestamp.sol";
|