@etherisc/gif-next 0.0.2-efdb520-159 → 0.0.2-f02157b-803
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +176 -11
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +168 -28
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +610 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +121 -28
- 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 +74 -181
- 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 +447 -60
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +519 -70
- 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 +1119 -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 +240 -1911
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/{service/ServiceBase.sol/ServiceBase.json → IInstanceService.sol/IInstanceService.json} +187 -66
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2329 -1158
- 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 +1257 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +703 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +424 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +481 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -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/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/instance/{service → base}/IService.sol/IService.json +180 -59
- 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/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{InstanceBase.sol/InstanceBase.json → base/ServiceBase.sol/ServiceBase.json} +225 -70
- 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/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/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +393 -85
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +182 -80
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{ComponentServiceBase.sol/ComponentServiceBase.json → IDistributionService.sol/IDistributionService.json} +209 -63
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +240 -55
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +330 -56
- 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 +190 -51
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +872 -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 +380 -139
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1261 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +504 -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/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/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 +277 -84
- 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/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 +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 +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 +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 +2 -2
- package/contracts/components/BaseComponent.sol +20 -23
- package/contracts/components/Distribution.sol +166 -0
- package/contracts/components/IBaseComponent.sol +8 -3
- package/contracts/components/IDistributionComponent.sol +43 -0
- package/contracts/components/IPoolComponent.sol +14 -9
- package/contracts/components/IProductComponent.sol +25 -9
- package/contracts/components/Pool.sol +115 -30
- package/contracts/components/Product.sol +212 -32
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/AccessManagedSimple.sol +114 -0
- package/contracts/instance/AccessManagerSimple.sol +682 -0
- package/contracts/instance/IAccessManagerSimple.sol +391 -0
- package/contracts/instance/IInstance.sol +17 -39
- package/contracts/instance/IInstanceService.sol +17 -0
- package/contracts/instance/Instance.sol +420 -46
- package/contracts/instance/InstanceAccessManager.sol +288 -0
- package/contracts/instance/InstanceReader.sol +280 -0
- package/contracts/instance/InstanceService.sol +102 -0
- package/contracts/instance/InstanceServiceManager.sol +56 -0
- package/contracts/instance/{service → base}/ComponentServiceBase.sol +13 -5
- package/contracts/instance/base/IInstanceBase.sol +23 -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/base/ServiceBase.sol +44 -0
- package/contracts/instance/module/IAccess.sol +38 -0
- package/contracts/instance/module/IBundle.sol +19 -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 +43 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ComponentOwnerService.sol +245 -102
- package/contracts/instance/service/IComponentOwnerService.sol +1 -3
- package/contracts/instance/service/IDistributionService.sol +12 -0
- package/contracts/instance/service/IPoolService.sol +8 -1
- package/contracts/instance/service/IProductService.sol +56 -7
- package/contracts/registry/ChainNft.sol +80 -37
- package/contracts/registry/IRegistry.sol +28 -28
- package/contracts/registry/IRegistryService.sol +35 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +315 -273
- package/contracts/registry/RegistryService.sol +439 -0
- package/contracts/registry/RegistryServiceManager.sol +64 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +8 -15
- 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 +62 -59
- 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 +7 -16
- 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/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 +57 -11
- package/contracts/types/StateId.sol +8 -2
- package/contracts/types/Timestamp.sol +7 -3
- package/contracts/types/UFixed.sol +144 -25
- package/contracts/types/Version.sol +38 -25
- 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/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/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -499
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -685
- package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
- package/artifacts/contracts/test/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/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/PoolService.sol +0 -98
- package/contracts/instance/service/ProductService.sol +0 -358
- 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
- /package/contracts/instance/{service → base}/IService.sol +0 -0
@@ -0,0 +1,45 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {NftId} from "../../types/NftId.sol";
|
5
|
+
import {NumberId} from "../../types/NumberId.sol";
|
6
|
+
import {ReferralId} from "../../types/Referral.sol";
|
7
|
+
import {RiskId} from "../../types/RiskId.sol";
|
8
|
+
import {Timestamp} from "../../types/Timestamp.sol";
|
9
|
+
|
10
|
+
interface IPolicy {
|
11
|
+
struct PolicyInfo {
|
12
|
+
NftId productNftId;
|
13
|
+
NftId bundleNftId;
|
14
|
+
ReferralId referralId;
|
15
|
+
RiskId riskId;
|
16
|
+
uint256 sumInsuredAmount;
|
17
|
+
uint256 premiumAmount;
|
18
|
+
uint256 premiumPaidAmount;
|
19
|
+
uint256 lifetime;
|
20
|
+
bytes applicationData;
|
21
|
+
bytes policyData;
|
22
|
+
uint16 claimsCount;
|
23
|
+
uint16 openClaimsCount;
|
24
|
+
uint256 payoutAmount;
|
25
|
+
Timestamp activatedAt; // time of underwriting
|
26
|
+
Timestamp expiredAt; // no new claims (activatedAt + lifetime)
|
27
|
+
Timestamp closedAt; // no locked capital (or declinedAt)
|
28
|
+
}
|
29
|
+
|
30
|
+
// claimId neeeds to be encoded policyNftId:claimId combination
|
31
|
+
struct ClaimInfo {
|
32
|
+
uint256 claimAmount;
|
33
|
+
uint256 paidAmount;
|
34
|
+
bytes data;
|
35
|
+
Timestamp closedAt; // payoment of confirmed claim amount (or declinedAt)
|
36
|
+
}
|
37
|
+
|
38
|
+
// claimId neeeds to be encoded policyNftId:claimId combination
|
39
|
+
struct PayoutInfo {
|
40
|
+
NumberId claimId;
|
41
|
+
uint256 amount;
|
42
|
+
bytes data;
|
43
|
+
Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
|
44
|
+
}
|
45
|
+
}
|
@@ -0,0 +1,43 @@
|
|
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 {UFixed} from "../../types/UFixed.sol";
|
9
|
+
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
10
|
+
|
11
|
+
interface ISetup {
|
12
|
+
struct ProductSetupInfo {
|
13
|
+
IERC20Metadata token;
|
14
|
+
TokenHandler tokenHandler;
|
15
|
+
NftId distributionNftId;
|
16
|
+
NftId poolNftId;
|
17
|
+
Fee distributionFee; // default distribution fee (no referral id)
|
18
|
+
Fee productFee; // product fee on net premium
|
19
|
+
Fee processingFee; // product fee on payout amounts
|
20
|
+
Fee poolFee; // pool fee on net premium
|
21
|
+
Fee stakingFee; // pool fee on staked capital from investor
|
22
|
+
Fee performanceFee; // pool fee on profits from capital investors
|
23
|
+
}
|
24
|
+
|
25
|
+
struct DistributionSetupInfo {
|
26
|
+
NftId productNftId;
|
27
|
+
TokenHandler tokenHandler;
|
28
|
+
Fee distributionFee; // default distribution fee (no referral id)
|
29
|
+
bool isIntercepting; // intercepts nft transfers (for distributors)
|
30
|
+
address wallet;
|
31
|
+
}
|
32
|
+
|
33
|
+
struct PoolSetupInfo {
|
34
|
+
NftId productNftId;
|
35
|
+
TokenHandler tokenHandler;
|
36
|
+
UFixed collateralizationLevel;
|
37
|
+
Fee poolFee; // pool fee on net premium
|
38
|
+
Fee stakingFee; // pool fee on staked capital from investor
|
39
|
+
Fee performanceFee; // pool fee on profits from capital investors
|
40
|
+
bool isIntercepting; // intercepts nft transfers (for bundles)
|
41
|
+
address wallet;
|
42
|
+
}
|
43
|
+
}
|
@@ -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,31 +1,38 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
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 {
|
10
|
-
import {
|
11
|
-
import {
|
12
|
-
import {IComponent, IComponentModule} from "../module/component/IComponent.sol";
|
9
|
+
import {ITreasury} from "../module/ITreasury.sol";
|
10
|
+
// import {TreasuryModule} from "../module/TreasuryModule.sol";
|
11
|
+
import {ISetup} from "../module/ISetup.sol";
|
13
12
|
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
14
13
|
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
15
|
-
|
14
|
+
import {IKeyValueStore} from "../../instance/base/IKeyValueStore.sol";
|
16
15
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
17
16
|
import {Versionable} from "../../shared/Versionable.sol";
|
18
17
|
|
19
|
-
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../types/RoleId.sol";
|
20
|
-
import {ObjectType, PRODUCT, ORACLE, POOL} from "../../types/ObjectType.sol";
|
18
|
+
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../types/RoleId.sol";
|
19
|
+
import {ObjectType, TOKEN, COMPONENT, PRODUCT, ORACLE, POOL, DISTRIBUTION} from "../../types/ObjectType.sol";
|
21
20
|
import {StateId, ACTIVE, PAUSED} from "../../types/StateId.sol";
|
21
|
+
import {Key32} from "../../types/Key32.sol";
|
22
22
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
23
|
-
import {Fee
|
24
|
-
import {Version,
|
23
|
+
import {Fee} from "../../types/Fee.sol";
|
24
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
25
|
+
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
25
26
|
|
27
|
+
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
28
|
+
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
26
29
|
import {IProductComponent} from "../../components/IProductComponent.sol";
|
27
|
-
import {
|
30
|
+
import {IService} from "../base/IService.sol";
|
28
31
|
import {IComponentOwnerService} from "./IComponentOwnerService.sol";
|
32
|
+
import {ServiceBase} from "../base/ServiceBase.sol";
|
33
|
+
// import {IPool, IPoolModule} from "../module/IPoolModule.sol";
|
34
|
+
|
35
|
+
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
29
36
|
|
30
37
|
contract ComponentOwnerService is
|
31
38
|
ServiceBase,
|
@@ -33,35 +40,35 @@ contract ComponentOwnerService is
|
|
33
40
|
{
|
34
41
|
using NftIdLib for NftId;
|
35
42
|
|
43
|
+
error MissingTypeRole();
|
44
|
+
error WalletIsZero();
|
45
|
+
error InvalidToken();
|
46
|
+
error InvalidPool();
|
47
|
+
error InvalidDistribution();
|
48
|
+
error InvalidPoolsInstance();
|
49
|
+
error InvalidDistributionsInstance();
|
50
|
+
|
51
|
+
error CollateralizationLevelIsZero();
|
52
|
+
|
36
53
|
string public constant NAME = "ComponentOwnerService";
|
37
54
|
|
38
55
|
modifier onlyRegisteredComponent(IBaseComponent component) {
|
39
|
-
NftId nftId =
|
56
|
+
NftId nftId = getRegistry().getNftId(address(component));
|
40
57
|
require(nftId.gtz(), "ERROR:COS-001:COMPONENT_UNKNOWN");
|
41
58
|
_;
|
42
59
|
}
|
43
60
|
|
44
61
|
constructor(
|
45
62
|
address registry,
|
46
|
-
NftId registryNftId
|
47
|
-
|
63
|
+
NftId registryNftId,
|
64
|
+
address initialOwner
|
65
|
+
)
|
48
66
|
{
|
49
|
-
|
67
|
+
_initializeServiceBase(registry, registryNftId, initialOwner);
|
68
|
+
_registerInterface(type(IComponentOwnerService).interfaceId);
|
50
69
|
}
|
51
70
|
|
52
|
-
function
|
53
|
-
public
|
54
|
-
pure
|
55
|
-
virtual override (IVersionable, Versionable)
|
56
|
-
returns(Version)
|
57
|
-
{
|
58
|
-
return toVersion(
|
59
|
-
toVersionPart(3),
|
60
|
-
toVersionPart(0),
|
61
|
-
toVersionPart(0));
|
62
|
-
}
|
63
|
-
|
64
|
-
function getName() external pure override returns(string memory name) {
|
71
|
+
function getName() public pure override(IService, ServiceBase) returns(string memory name) {
|
65
72
|
return NAME;
|
66
73
|
}
|
67
74
|
|
@@ -74,101 +81,237 @@ contract ComponentOwnerService is
|
|
74
81
|
if (cType == POOL()) {
|
75
82
|
return POOL_OWNER_ROLE();
|
76
83
|
}
|
84
|
+
if (cType == DISTRIBUTION()) {
|
85
|
+
return DISTRIBUTION_OWNER_ROLE();
|
86
|
+
}
|
77
87
|
if (cType == ORACLE()) {
|
78
88
|
return ORACLE_OWNER_ROLE();
|
79
89
|
}
|
80
90
|
}
|
81
91
|
|
82
|
-
function
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
92
|
+
function getRegistryService() public view virtual returns (IRegistryService) {
|
93
|
+
address service = getRegistry().getServiceAddress("RegistryService", getMajorVersion());
|
94
|
+
return IRegistryService(service);
|
95
|
+
}
|
96
|
+
|
97
|
+
function registerProduct(
|
98
|
+
IBaseComponent product
|
99
|
+
) external returns (NftId nftId) {
|
100
|
+
|
101
|
+
// TODO some info parameters from component and from register may differ -> getObjectInfo() after registration?
|
102
|
+
(
|
103
|
+
IRegistry.ObjectInfo memory info,
|
104
|
+
bytes memory data
|
105
|
+
) = getRegistryService().registerProduct(
|
106
|
+
product,
|
107
|
+
msg.sender);
|
108
|
+
|
109
|
+
NftId instanceNftId = info.parentNftId;
|
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,
|
121
|
+
instanceNftId,
|
122
|
+
instance,
|
123
|
+
data
|
89
124
|
);
|
125
|
+
}
|
90
126
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
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
|
97
154
|
);
|
155
|
+
}
|
98
156
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
nftId,
|
121
|
-
distributorNftId,
|
122
|
-
poolNftId,
|
123
|
-
token,
|
124
|
-
wallet,
|
125
|
-
product.getPolicyFee(),
|
126
|
-
product.getProcessingFee()
|
127
|
-
);
|
128
|
-
} else if (component.getType() == POOL()) {
|
129
|
-
IPoolComponent pool = IPoolComponent(address(component));
|
130
|
-
|
131
|
-
// register with pool
|
132
|
-
instance.registerPool(
|
133
|
-
nftId,
|
134
|
-
pool.isVerifying(),
|
135
|
-
pool.getCollateralizationLevel());
|
136
|
-
|
137
|
-
// register with tresury
|
138
|
-
instance.registerPool(
|
139
|
-
nftId,
|
140
|
-
wallet,
|
141
|
-
pool.getStakingFee(),
|
142
|
-
pool.getPerformanceFee());
|
143
|
-
}
|
144
|
-
// TODO add distribution
|
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
|
+
// }
|
145
178
|
}
|
146
179
|
|
147
180
|
function lock(
|
148
181
|
IBaseComponent component
|
149
182
|
) external override onlyRegisteredComponent(component) {
|
183
|
+
// TODO use msg.sender to get component and get instance via registered parent nft id
|
150
184
|
IInstance instance = component.getInstance();
|
151
|
-
|
152
|
-
|
153
|
-
);
|
154
|
-
require(info.nftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
|
155
|
-
|
156
|
-
info.state = PAUSED();
|
157
|
-
// setComponentInfo checks for valid state changes
|
158
|
-
instance.setComponentInfo(info);
|
185
|
+
NftId nftId = component.getNftId();
|
186
|
+
Key32 key = nftId.toKey32(COMPONENT());
|
187
|
+
// instance.updateState(key, PAUSED());
|
159
188
|
}
|
160
189
|
|
161
190
|
function unlock(
|
162
191
|
IBaseComponent component
|
163
192
|
) external override onlyRegisteredComponent(component) {
|
193
|
+
// TODO use msg.sender to get component and get instance via registered parent nft id
|
164
194
|
IInstance instance = component.getInstance();
|
165
|
-
|
166
|
-
|
195
|
+
NftId nftId = component.getNftId();
|
196
|
+
Key32 key = nftId.toKey32(COMPONENT());
|
197
|
+
// instance.updateState(key, ACTIVE());
|
198
|
+
}
|
199
|
+
|
200
|
+
// Internals
|
201
|
+
|
202
|
+
function _registerProduct(
|
203
|
+
NftId nftId,
|
204
|
+
NftId instanceNftId,
|
205
|
+
IInstance instance,
|
206
|
+
bytes memory data
|
207
|
+
)
|
208
|
+
internal
|
209
|
+
{
|
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
|
+
// );
|
261
|
+
|
262
|
+
// treasury module
|
263
|
+
instance.createProductSetup(
|
264
|
+
nftId,
|
265
|
+
info
|
167
266
|
);
|
168
|
-
|
267
|
+
}
|
268
|
+
|
269
|
+
function _registerPool(
|
270
|
+
NftId nftId,
|
271
|
+
NftId instanceNftId,
|
272
|
+
IInstance instance,
|
273
|
+
bytes memory data
|
274
|
+
)
|
275
|
+
internal
|
276
|
+
{
|
277
|
+
(
|
278
|
+
ISetup.PoolSetupInfo memory info,
|
279
|
+
address wallet,
|
280
|
+
IERC20Metadata token,
|
281
|
+
/*poolFee*/,
|
282
|
+
/*stakingFee*/,
|
283
|
+
/*performanceFee*/
|
284
|
+
) = abi.decode(data, (ISetup.PoolSetupInfo, address, IERC20Metadata, Fee, Fee, Fee));
|
285
|
+
|
286
|
+
IRegistry _registry = getRegistry();
|
287
|
+
|
288
|
+
if(wallet == address(0)) {
|
289
|
+
revert WalletIsZero();
|
290
|
+
}
|
169
291
|
|
170
|
-
|
171
|
-
|
172
|
-
|
292
|
+
ObjectType tokenType = _registry.getObjectInfo(address(token)).objectType;
|
293
|
+
|
294
|
+
if(tokenType != TOKEN()) {
|
295
|
+
revert InvalidToken();
|
296
|
+
}
|
297
|
+
|
298
|
+
if(UFixedLib.eqz(info.collateralizationLevel)) {
|
299
|
+
revert CollateralizationLevelIsZero();
|
300
|
+
}
|
301
|
+
|
302
|
+
// TODO add more validations
|
303
|
+
|
304
|
+
// // component module
|
305
|
+
// instance.registerComponent(
|
306
|
+
// nftId,
|
307
|
+
// token,
|
308
|
+
// wallet
|
309
|
+
// );
|
310
|
+
|
311
|
+
// pool module
|
312
|
+
instance.createPoolSetup(
|
313
|
+
nftId,
|
314
|
+
info
|
315
|
+
);
|
173
316
|
}
|
174
|
-
}
|
317
|
+
}
|
@@ -5,13 +5,11 @@ 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 "../base/IService.sol";
|
9
9
|
|
10
10
|
// TODO rename to registry service
|
11
11
|
interface IComponentOwnerService is IService {
|
12
12
|
|
13
|
-
function register(IBaseComponent component) external returns(NftId componentNftId);
|
14
|
-
|
15
13
|
// TODO move to product/pool services
|
16
14
|
function lock(IBaseComponent component) external;
|
17
15
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../../types/NftId.sol";
|
5
|
+
import {Fee} from "../../types/Fee.sol";
|
6
|
+
import {IService} from "../base/IService.sol";
|
7
|
+
|
8
|
+
interface IDistributionService is IService {
|
9
|
+
function setFees(
|
10
|
+
Fee memory distributionFee
|
11
|
+
) external;
|
12
|
+
}
|
@@ -3,21 +3,28 @@ 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 "../base/IService.sol";
|
7
7
|
|
8
8
|
interface IPoolService is IService {
|
9
9
|
function setFees(
|
10
|
+
Fee memory poolFee,
|
10
11
|
Fee memory stakingFee,
|
11
12
|
Fee memory performanceFee
|
12
13
|
) external;
|
13
14
|
|
14
15
|
function createBundle(
|
15
16
|
address owner,
|
17
|
+
Fee memory fee,
|
16
18
|
uint256 amount,
|
17
19
|
uint256 lifetime,
|
18
20
|
bytes calldata filter
|
19
21
|
) external returns(NftId bundleNftId);
|
20
22
|
|
23
|
+
function setBundleFee(
|
24
|
+
NftId bundleNftId,
|
25
|
+
Fee memory fee
|
26
|
+
) external;
|
27
|
+
|
21
28
|
// function fundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
|
22
29
|
|
23
30
|
// function defundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
|