@etherisc/gif-next 0.0.2-6f2f76e-746 → 0.0.2-716a895-659
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 +73 -11
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +166 -39
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +557 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +119 -39
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +177 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +108 -156
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +67 -139
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +417 -88
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +360 -51
- 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/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +847 -615
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1107 -697
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{InstanceBase.sol/InstanceBase.json → base/ComponentServiceBase.sol/ComponentServiceBase.json} +225 -57
- 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 +560 -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 +175 -54
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +544 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +710 -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/ModuleBase.sol/ModuleBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{module/compensation/ICompensation.sol/ICompensation.json → base/ModuleBase.sol/ModuleBase.json} +2 -2
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{service → base}/ServiceBase.sol/ServiceBase.json +221 -53
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +71 -50
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +71 -50
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +22 -93
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +22 -93
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +10 -0
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{compensation/ICompensation.sol/ICompensationModule.json → distribution/IDistribution.sol/IDistribution.json} +2 -2
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +10 -0
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +61 -51
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +61 -51
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +1 -1
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +29 -14
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +28 -13
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +104 -1
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +126 -5
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +326 -221
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +326 -221
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +400 -64
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +630 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +176 -74
- 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} +204 -58
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +235 -50
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +325 -51
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +335 -53
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +471 -71
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +141 -12
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +5 -0
- 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 +1245 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +490 -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 +55 -14
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +4 -0
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +557 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +1 -1
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +417 -88
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +1 -1
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +407 -56
- 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 +38 -4
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +267 -62
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +89 -25
- 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/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +55 -11
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -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/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -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 +30 -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/UFixed.sol/UFixedMathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +39 -8
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/BaseComponent.sol +11 -21
- package/contracts/components/Distribution.sol +155 -0
- package/contracts/components/IBaseComponent.sol +1 -1
- package/contracts/components/IDistributionComponent.sol +46 -0
- package/contracts/components/IPoolComponent.sol +15 -8
- package/contracts/components/IProductComponent.sol +26 -8
- package/contracts/components/Pool.sol +99 -27
- package/contracts/components/Product.sol +204 -22
- package/contracts/instance/IInstance.sol +17 -16
- package/contracts/instance/Instance.sol +35 -14
- package/contracts/instance/{service → base}/ComponentServiceBase.sol +13 -5
- package/contracts/instance/base/IInstanceBase.sol +23 -0
- package/contracts/instance/base/IKeyValueStore.sol +50 -0
- package/contracts/instance/base/ILifecycle.sol +30 -0
- package/contracts/instance/base/InstanceBase.sol +89 -0
- package/contracts/instance/base/KeyValueStore.sol +161 -0
- package/contracts/instance/{module/lifecycle/LifecycleModule.sol → base/Lifecycle.sol} +50 -39
- package/contracts/instance/base/ModuleBase.sol +57 -0
- package/contracts/instance/base/ServiceBase.sol +44 -0
- package/contracts/instance/module/access/Access.sol +6 -6
- package/contracts/instance/module/bundle/BundleModule.sol +24 -118
- package/contracts/instance/module/bundle/IBundle.sol +9 -9
- package/contracts/instance/module/component/ComponentModule.sol +31 -63
- package/contracts/instance/module/component/IComponent.sol +6 -31
- package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
- package/contracts/instance/module/distribution/IDistribution.sol +10 -0
- package/contracts/instance/module/policy/IPolicy.sol +13 -10
- package/contracts/instance/module/policy/PolicyModule.sol +33 -26
- package/contracts/instance/module/pool/IPoolModule.sol +4 -4
- package/contracts/instance/module/pool/PoolModule.sol +23 -15
- package/contracts/instance/module/risk/IRisk.sol +18 -2
- package/contracts/instance/module/risk/RiskModule.sol +56 -2
- package/contracts/instance/module/treasury/ITreasury.sol +31 -50
- package/contracts/instance/module/treasury/TokenHandler.sol +1 -1
- package/contracts/instance/module/treasury/TreasuryModule.sol +67 -88
- package/contracts/instance/service/ComponentOwnerService.sol +234 -93
- package/contracts/instance/service/DistributionService.sol +54 -0
- 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/instance/service/PoolService.sol +50 -24
- package/contracts/instance/service/ProductService.sol +249 -94
- package/contracts/registry/ChainNft.sol +42 -14
- package/contracts/registry/IChainNft.sol +2 -1
- package/contracts/registry/IRegistry.sol +27 -27
- package/contracts/registry/IRegistryService.sol +35 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +314 -269
- package/contracts/registry/RegistryService.sol +441 -0
- package/contracts/registry/RegistryServiceManager.sol +63 -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 +55 -11
- package/contracts/shared/NftOwnable.sol +136 -0
- package/contracts/shared/ProxyManager.sol +94 -0
- package/contracts/shared/Registerable.sol +62 -59
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +112 -54
- package/contracts/test/TestDistribution.sol +22 -0
- package/contracts/test/TestPool.sol +7 -2
- package/contracts/test/TestProduct.sol +37 -7
- package/contracts/test/TestRegisterable.sol +5 -6
- package/contracts/test/TestRoleId.sol +2 -2
- package/contracts/test/TestService.sol +6 -12
- package/contracts/test/Usdc.sol +26 -0
- package/contracts/types/Fee.sol +8 -3
- package/contracts/types/Key32.sol +45 -0
- package/contracts/types/NftId.sol +16 -1
- package/contracts/types/ObjectType.sol +24 -8
- package/contracts/types/ReferralId.sol +48 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +18 -9
- package/contracts/types/StateId.sol +7 -1
- package/contracts/types/UFixed.sol +22 -19
- package/contracts/types/Version.sol +9 -0
- package/package.json +1 -1
- 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/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
- 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/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/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
- package/contracts/experiment/statemachine/README.md +0 -112
- package/contracts/instance/IServiceLinked.sol +0 -12
- package/contracts/instance/InstanceBase.sol +0 -71
- package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
- package/contracts/instance/module/compensation/ICompensation.sol +0 -10
- package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
- package/contracts/instance/service/ServiceBase.sol +0 -39
- package/contracts/registry/IRegistryLinked.sol +0 -8
- package/contracts/shared/IOwnable.sol +0 -6
- /package/contracts/instance/{service → base}/IService.sol +0 -0
@@ -1,42 +1,157 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IRisk} from "../instance/module/risk/IRisk.sol";
|
7
|
+
import {ITreasury} from "../instance/module/treasury/ITreasury.sol";
|
4
8
|
import {IProductService} from "../instance/service/IProductService.sol";
|
5
9
|
import {IProductComponent} from "./IProductComponent.sol";
|
6
|
-
import {NftId} from "../types/NftId.sol";
|
10
|
+
import {NftId, zeroNftId} from "../types/NftId.sol";
|
7
11
|
import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
|
12
|
+
import {ReferralId} from "../types/ReferralId.sol";
|
13
|
+
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
14
|
+
import {StateId} from "../types/StateId.sol";
|
8
15
|
import {Timestamp} from "../types/Timestamp.sol";
|
9
|
-
import {Fee} from "../types/Fee.sol";
|
16
|
+
import {Fee, FeeLib} from "../types/Fee.sol";
|
10
17
|
import {BaseComponent} from "./BaseComponent.sol";
|
11
18
|
|
19
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
20
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
21
|
+
import {Registerable} from "../shared/Registerable.sol";
|
22
|
+
|
23
|
+
import {IPool} from "../instance/module/pool/IPoolModule.sol";
|
24
|
+
import {Pool} from "../components/Pool.sol";
|
25
|
+
|
12
26
|
contract Product is BaseComponent, IProductComponent {
|
13
|
-
IProductService
|
14
|
-
|
27
|
+
IProductService internal _productService;
|
28
|
+
Pool internal _pool;
|
29
|
+
address internal _distribution;
|
30
|
+
Fee internal _initialProductFee;
|
31
|
+
Fee internal _initialProcessingFee;
|
32
|
+
|
33
|
+
NftId internal _poolNftId;
|
34
|
+
NftId internal _distributionNftId;
|
15
35
|
|
16
36
|
constructor(
|
17
37
|
address registry,
|
18
38
|
NftId instanceNftid,
|
19
39
|
address token,
|
20
|
-
|
21
|
-
|
40
|
+
bool isInterceptor,
|
41
|
+
address pool,
|
42
|
+
address distribution,
|
43
|
+
Fee memory productFee,
|
44
|
+
Fee memory processingFee,
|
45
|
+
address initialOwner
|
46
|
+
) BaseComponent(registry, instanceNftid, token, PRODUCT(), isInterceptor, initialOwner) {
|
22
47
|
// TODO add validation
|
23
48
|
_productService = _instance.getProductService();
|
24
|
-
_pool = pool;
|
49
|
+
_pool = Pool(pool);
|
50
|
+
_distribution = distribution;
|
51
|
+
_initialProductFee = productFee;
|
52
|
+
_initialProcessingFee = processingFee;
|
53
|
+
|
54
|
+
_poolNftId = getRegistry().getNftId(address(_pool));
|
55
|
+
_distributionNftId = getRegistry().getNftId(_distribution);
|
56
|
+
|
57
|
+
_registerInterface(type(IProductComponent).interfaceId);
|
58
|
+
}
|
59
|
+
|
60
|
+
|
61
|
+
function calculatePremium(
|
62
|
+
uint256 sumInsuredAmount,
|
63
|
+
RiskId riskId,
|
64
|
+
uint256 lifetime,
|
65
|
+
bytes memory applicationData,
|
66
|
+
ReferralId referralId,
|
67
|
+
NftId bundleNftId
|
68
|
+
)
|
69
|
+
external
|
70
|
+
view
|
71
|
+
override
|
72
|
+
returns (uint256 premiumAmount)
|
73
|
+
{
|
74
|
+
(premiumAmount,,,,) = _productService.calculatePremium(
|
75
|
+
riskId,
|
76
|
+
sumInsuredAmount,
|
77
|
+
lifetime,
|
78
|
+
applicationData,
|
79
|
+
bundleNftId,
|
80
|
+
referralId
|
81
|
+
);
|
82
|
+
}
|
83
|
+
|
84
|
+
|
85
|
+
function calculateNetPremium(
|
86
|
+
uint256 sumInsuredAmount,
|
87
|
+
RiskId riskId,
|
88
|
+
uint256 lifetime,
|
89
|
+
bytes memory applicationData
|
90
|
+
)
|
91
|
+
external
|
92
|
+
view
|
93
|
+
virtual override
|
94
|
+
returns (uint256 netPremiumAmount)
|
95
|
+
{
|
96
|
+
// default 10% of sum insured
|
97
|
+
return sumInsuredAmount / 10;
|
98
|
+
}
|
99
|
+
|
100
|
+
function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
|
101
|
+
return RiskIdLib.toRiskId(riskName);
|
102
|
+
}
|
103
|
+
|
104
|
+
function _createRisk(
|
105
|
+
RiskId id,
|
106
|
+
bytes memory data
|
107
|
+
) internal {
|
108
|
+
_productService.createRisk(
|
109
|
+
id,
|
110
|
+
data
|
111
|
+
);
|
112
|
+
}
|
113
|
+
|
114
|
+
function _setRiskInfo(
|
115
|
+
RiskId id,
|
116
|
+
IRisk.RiskInfo memory info
|
117
|
+
) internal {
|
118
|
+
_productService.setRiskInfo(
|
119
|
+
id,
|
120
|
+
info
|
121
|
+
);
|
122
|
+
}
|
123
|
+
|
124
|
+
function _updateRiskState(
|
125
|
+
RiskId id,
|
126
|
+
StateId state
|
127
|
+
) internal {
|
128
|
+
_productService.updateRiskState(
|
129
|
+
id,
|
130
|
+
state
|
131
|
+
);
|
132
|
+
}
|
133
|
+
|
134
|
+
function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
|
135
|
+
return _instance.getRiskInfo(id);
|
25
136
|
}
|
26
137
|
|
27
138
|
function _createApplication(
|
28
139
|
address applicationOwner,
|
140
|
+
RiskId riskId,
|
29
141
|
uint256 sumInsuredAmount,
|
30
|
-
uint256 premiumAmount,
|
31
142
|
uint256 lifetime,
|
32
|
-
|
143
|
+
bytes memory applicationData,
|
144
|
+
NftId bundleNftId,
|
145
|
+
ReferralId referralId
|
33
146
|
) internal returns (NftId nftId) {
|
34
147
|
nftId = _productService.createApplication(
|
35
148
|
applicationOwner,
|
149
|
+
riskId,
|
36
150
|
sumInsuredAmount,
|
37
|
-
premiumAmount,
|
38
151
|
lifetime,
|
39
|
-
|
152
|
+
applicationData,
|
153
|
+
bundleNftId,
|
154
|
+
referralId
|
40
155
|
);
|
41
156
|
}
|
42
157
|
|
@@ -76,29 +191,38 @@ contract Product is BaseComponent, IProductComponent {
|
|
76
191
|
}
|
77
192
|
|
78
193
|
function getPoolNftId() external view override returns (NftId poolNftId) {
|
79
|
-
return
|
194
|
+
return getRegistry().getNftId(address(_pool));
|
195
|
+
}
|
196
|
+
|
197
|
+
function getDistributionNftId() external view override returns (NftId distributionNftId) {
|
198
|
+
return getRegistry().getNftId(_distribution);
|
80
199
|
}
|
81
200
|
|
82
201
|
// from product component
|
83
202
|
function setFees(
|
84
|
-
Fee memory
|
203
|
+
Fee memory productFee,
|
85
204
|
Fee memory processingFee
|
86
205
|
)
|
87
206
|
external
|
88
207
|
onlyOwner
|
89
208
|
override
|
90
209
|
{
|
91
|
-
_productService.setFees(
|
210
|
+
_productService.setFees(productFee, processingFee);
|
92
211
|
}
|
93
212
|
|
94
|
-
|
95
|
-
function
|
213
|
+
// TODO delete, call instance intead
|
214
|
+
function getProductFee()
|
96
215
|
external
|
97
216
|
view
|
98
217
|
override
|
99
|
-
returns (Fee memory
|
218
|
+
returns (Fee memory productFee)
|
100
219
|
{
|
101
|
-
|
220
|
+
NftId productNftId = getNftId();
|
221
|
+
if (_instance.hasTreasuryInfo(productNftId)) {
|
222
|
+
return _instance.getTreasuryInfo(productNftId).productFee;
|
223
|
+
} else {
|
224
|
+
return _initialProductFee;
|
225
|
+
}
|
102
226
|
}
|
103
227
|
|
104
228
|
function getProcessingFee()
|
@@ -107,11 +231,69 @@ contract Product is BaseComponent, IProductComponent {
|
|
107
231
|
override
|
108
232
|
returns (Fee memory processingFee)
|
109
233
|
{
|
110
|
-
|
234
|
+
NftId productNftId = getNftId();
|
235
|
+
if (_instance.hasTreasuryInfo(productNftId)) {
|
236
|
+
return _instance.getTreasuryInfo(productNftId).processingFee;
|
237
|
+
} else {
|
238
|
+
return _initialProcessingFee;
|
239
|
+
}
|
111
240
|
}
|
112
241
|
|
113
|
-
// from
|
114
|
-
|
115
|
-
|
242
|
+
// from IRegisterable
|
243
|
+
|
244
|
+
// TODO used only once, occupies space
|
245
|
+
function getInitialInfo()
|
246
|
+
public
|
247
|
+
view
|
248
|
+
override (IRegisterable, Registerable)
|
249
|
+
returns (IRegistry.ObjectInfo memory, bytes memory)
|
250
|
+
{
|
251
|
+
// from Registerable
|
252
|
+
(
|
253
|
+
IRegistry.ObjectInfo memory productInfo,
|
254
|
+
bytes memory data
|
255
|
+
) = super.getInitialInfo();
|
256
|
+
|
257
|
+
// TODO read pool & distribution fees
|
258
|
+
// 1) from pool -> the only option -> pool must be registered first?
|
259
|
+
// 2) from instance -> all fees are set into instance at product registration which is ongoing here
|
260
|
+
// checks are done in registryProduct() where THIS function is called
|
261
|
+
//require(getRegistry().getObjectInfo(_poolNftId).objectType == POOL(), "POOL_NOT_REGISTERED");
|
262
|
+
//require(getRegistry().getObjectInfo(_distributionNftId).objectType == DISTRIBUTION(), "DISTRIBUTION_NOT_REGISTERED");
|
263
|
+
|
264
|
+
// from PoolComponent
|
265
|
+
(
|
266
|
+
IRegistry.ObjectInfo memory poolInfo,
|
267
|
+
bytes memory poolData
|
268
|
+
) = _pool.getInitialInfo();
|
269
|
+
|
270
|
+
(
|
271
|
+
/*IPool.PoolInfo memory info*/,
|
272
|
+
/*address wallet*/,
|
273
|
+
/*IERC20Metadata token*/,
|
274
|
+
Fee memory initialPoolFee,
|
275
|
+
Fee memory initialStakingFee,
|
276
|
+
Fee memory initialPerformanceFee
|
277
|
+
) = abi.decode(poolData, (IPool.PoolInfo, address, IERC20Metadata, Fee, Fee, Fee));
|
278
|
+
|
279
|
+
// TODO from DistributionComponent
|
280
|
+
|
281
|
+
return (
|
282
|
+
productInfo,
|
283
|
+
abi.encode(
|
284
|
+
ITreasury.TreasuryInfo(
|
285
|
+
_poolNftId,
|
286
|
+
_distributionNftId,
|
287
|
+
_token,
|
288
|
+
_initialProductFee,
|
289
|
+
_initialProcessingFee,
|
290
|
+
initialPoolFee,
|
291
|
+
initialStakingFee,
|
292
|
+
initialPerformanceFee,
|
293
|
+
FeeLib.zeroFee()//_instance.getDistributionFee(_distributionNftId)
|
294
|
+
),
|
295
|
+
_wallet
|
296
|
+
)
|
297
|
+
);
|
116
298
|
}
|
117
299
|
}
|
@@ -3,29 +3,28 @@ pragma solidity ^0.8.19;
|
|
3
3
|
|
4
4
|
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
5
|
|
6
|
-
|
6
|
+
import {INftOwnable} from "../shared/INftOwnable.sol";
|
7
7
|
import {IVersionable} from "../shared/IVersionable.sol";
|
8
8
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
9
|
-
import {IOwnable} from "../shared/IOwnable.sol";
|
10
9
|
import {RoleId} from "../types/RoleId.sol";
|
11
10
|
|
12
11
|
import {IAccessModule} from "./module/access/IAccess.sol";
|
13
12
|
import {IBundleModule} from "./module/bundle/IBundle.sol";
|
14
|
-
import {
|
15
|
-
import {ILifecycleModule} from "./module/lifecycle/ILifecycle.sol";
|
13
|
+
import {IDistributionModule} from "./module/distribution/IDistribution.sol";
|
16
14
|
import {IComponentModule} from "./module/component/IComponent.sol";
|
17
15
|
import {IPolicyModule} from "./module/policy/IPolicy.sol";
|
18
16
|
import {IPoolModule} from "./module/pool/IPoolModule.sol";
|
19
17
|
import {IRiskModule} from "./module/risk/IRisk.sol";
|
20
18
|
import {ITreasuryModule} from "./module/treasury/ITreasury.sol";
|
21
19
|
|
22
|
-
import {
|
23
|
-
import {
|
20
|
+
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
21
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
24
22
|
|
25
23
|
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
24
|
+
import {IDistributionService} from "./service/IDistributionService.sol";
|
26
25
|
import {IProductService} from "./service/IProductService.sol";
|
27
26
|
import {IPoolService} from "./service/IPoolService.sol";
|
28
|
-
|
27
|
+
import {IInstanceBase} from "./base/IInstanceBase.sol";
|
29
28
|
|
30
29
|
// solhint-disable-next-line no-empty-blocks
|
31
30
|
interface IInstance is
|
@@ -33,21 +32,23 @@ interface IInstance is
|
|
33
32
|
IVersionable,
|
34
33
|
IRegisterable,
|
35
34
|
IAccessModule,
|
36
|
-
ILifecycleModule,
|
37
35
|
IPolicyModule,
|
38
36
|
IPoolModule,
|
37
|
+
IRiskModule,
|
39
38
|
IBundleModule,
|
40
39
|
IComponentModule,
|
41
40
|
ITreasuryModule,
|
42
|
-
|
43
|
-
|
41
|
+
IDistributionModule,
|
42
|
+
IInstanceBase
|
44
43
|
{
|
45
|
-
function getRegistry() external view override (
|
46
|
-
function
|
44
|
+
function getRegistry() external view override (INftOwnable) returns (IRegistry registry);
|
45
|
+
function getOwner() external view override (IAccessModule, INftOwnable) returns(address owner);
|
46
|
+
|
47
|
+
function getKeyValueStore() external view override (IInstanceBase) returns (IKeyValueStore keyValueStore);
|
47
48
|
|
48
|
-
function getComponentOwnerService() external view override (
|
49
|
-
function
|
50
|
-
function
|
49
|
+
function getComponentOwnerService() external view override (IInstanceBase, IComponentModule, IPoolModule, ITreasuryModule) returns(IComponentOwnerService);
|
50
|
+
function getDistributionService() external view override returns(IDistributionService);
|
51
|
+
function getProductService() external view override (IInstanceBase, IBundleModule, IPolicyModule) returns(IProductService);
|
52
|
+
function getPoolService() external view override (IInstanceBase, IBundleModule, IPoolModule) returns(IPoolService);
|
51
53
|
|
52
|
-
function getOwner() external view override (IOwnable, IAccessModule) returns(address owner);
|
53
54
|
}
|
@@ -2,13 +2,14 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
import {NftId} from "../types/NftId.sol";
|
5
|
+
import {INftOwnable} from "../shared/INftOwnable.sol";
|
6
|
+
import {NftOwnable} from "../shared/NftOwnable.sol";
|
5
7
|
import {RoleId} from "../types/RoleId.sol";
|
6
8
|
|
7
|
-
import {InstanceBase} from "./InstanceBase.sol";
|
9
|
+
import {InstanceBase} from "./base/InstanceBase.sol";
|
8
10
|
import {AccessModule} from "./module/access/Access.sol";
|
9
|
-
import {CompensationModule} from "./module/compensation/CompensationModule.sol";
|
10
|
-
import {LifecycleModule} from "./module/lifecycle/LifecycleModule.sol";
|
11
11
|
import {ComponentModule} from "./module/component/ComponentModule.sol";
|
12
|
+
import {DistributionModule} from "./module/distribution/DistributionModule.sol";
|
12
13
|
import {PolicyModule} from "./module/policy/PolicyModule.sol";
|
13
14
|
import {PoolModule} from "./module/pool/PoolModule.sol";
|
14
15
|
import {RiskModule} from "./module/risk/RiskModule.sol";
|
@@ -22,19 +23,22 @@ import {IBundleModule} from "./module/bundle/IBundle.sol";
|
|
22
23
|
import {IComponentModule} from "./module/component/IComponent.sol";
|
23
24
|
import {IPoolModule} from "./module/pool/IPoolModule.sol";
|
24
25
|
import {IPolicyModule} from "./module/policy/IPolicy.sol";
|
25
|
-
import {
|
26
|
+
import {IInstanceBase} from "./base/IInstanceBase.sol";
|
27
|
+
import {ITreasuryModule} from "./module/treasury/ITreasury.sol";
|
26
28
|
|
27
29
|
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
30
|
+
import {IDistributionService} from "./service/IDistributionService.sol";
|
28
31
|
import {IProductService} from "./service/IProductService.sol";
|
29
32
|
import {IPoolService} from "./service/IPoolService.sol";
|
30
33
|
|
34
|
+
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
35
|
+
|
31
36
|
contract Instance is
|
32
37
|
InstanceBase,
|
33
38
|
AccessModule,
|
34
39
|
BundleModule,
|
35
40
|
ComponentModule,
|
36
|
-
|
37
|
-
LifecycleModule,
|
41
|
+
DistributionModule,
|
38
42
|
PolicyModule,
|
39
43
|
PoolModule,
|
40
44
|
RiskModule,
|
@@ -42,25 +46,42 @@ contract Instance is
|
|
42
46
|
{
|
43
47
|
constructor(
|
44
48
|
address registry,
|
45
|
-
NftId registryNftId
|
49
|
+
NftId registryNftId,
|
50
|
+
address initialOwner
|
46
51
|
)
|
47
|
-
InstanceBase(registry, registryNftId)
|
52
|
+
InstanceBase(registry, registryNftId, initialOwner)
|
48
53
|
AccessModule()
|
49
54
|
BundleModule()
|
55
|
+
DistributionModule()
|
50
56
|
ComponentModule()
|
51
57
|
PolicyModule()
|
52
58
|
PoolModule()
|
53
59
|
TreasuryModule()
|
54
60
|
{
|
61
|
+
initializeBundleModule(_keyValueStore);
|
62
|
+
initializeComponentModule(_keyValueStore);
|
63
|
+
initializeDistributionModule(_keyValueStore);
|
64
|
+
initializePolicyModule(_keyValueStore);
|
65
|
+
initializePoolModule(_keyValueStore);
|
66
|
+
initializeRiskModule(_keyValueStore);
|
67
|
+
}
|
68
|
+
|
69
|
+
modifier onlyComponentOwnerService() override (ComponentModule, PoolModule, TreasuryModule) {
|
70
|
+
require(
|
71
|
+
msg.sender == address(this.getComponentOwnerService()),
|
72
|
+
"ERROR:CMP-001:NOT_REGISTRY_SERVICE"
|
73
|
+
);
|
74
|
+
_;
|
55
75
|
}
|
56
76
|
|
57
|
-
function getRegistry() public view override (
|
77
|
+
function getRegistry() public view override (INftOwnable, NftOwnable) returns (IRegistry registry) { return super.getRegistry(); }
|
58
78
|
|
59
|
-
function
|
79
|
+
function getKeyValueStore() public view override (InstanceBase) returns (IKeyValueStore keyValueStore) { return super.getKeyValueStore(); }
|
60
80
|
|
61
|
-
function getComponentOwnerService() external view override (IComponentModule,
|
62
|
-
function
|
63
|
-
function
|
81
|
+
function getComponentOwnerService() external view override (IInstanceBase, IComponentModule, ITreasuryModule, IPoolModule) returns(IComponentOwnerService service) { return _componentOwnerService; }
|
82
|
+
function getDistributionService() external view override (IInstanceBase) returns(IDistributionService service) { return _distributionService; }
|
83
|
+
function getProductService() external view override (IBundleModule, IPolicyModule, IInstanceBase) returns(IProductService service) { return _productService; }
|
84
|
+
function getPoolService() external view override (IBundleModule, IPoolModule, IInstanceBase) returns(IPoolService service) { return _poolService; }
|
64
85
|
|
65
|
-
function getOwner() public view override (IAccessModule,
|
86
|
+
function getOwner() public view override (IAccessModule, INftOwnable, NftOwnable) returns(address owner) { return super.getOwner(); }
|
66
87
|
}
|
@@ -2,20 +2,23 @@
|
|
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
7
|
import {ObjectType, INSTANCE, PRODUCT, POOL} from "../../types/ObjectType.sol";
|
7
8
|
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
8
9
|
|
9
10
|
import {ServiceBase} from "./ServiceBase.sol";
|
11
|
+
import {Version, VersionPart, VersionLib} from "../../types/Version.sol";
|
10
12
|
|
11
13
|
abstract contract ComponentServiceBase is ServiceBase {
|
12
14
|
|
13
15
|
constructor(
|
14
16
|
address registry,
|
15
|
-
NftId registryNftId
|
17
|
+
NftId registryNftId,
|
18
|
+
address initialOwner
|
16
19
|
)
|
17
|
-
ServiceBase(registry, registryNftId)
|
18
20
|
{
|
21
|
+
_initializeServiceBase(registry, registryNftId, initialOwner);
|
19
22
|
}
|
20
23
|
|
21
24
|
|
@@ -29,13 +32,18 @@ abstract contract ComponentServiceBase is ServiceBase {
|
|
29
32
|
IInstance instance
|
30
33
|
)
|
31
34
|
{
|
32
|
-
NftId componentNftId =
|
35
|
+
NftId componentNftId = getRegistry().getNftId(msg.sender);
|
33
36
|
require(componentNftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
|
34
37
|
|
35
|
-
info =
|
38
|
+
info = getRegistry().getObjectInfo(componentNftId);
|
36
39
|
require(info.objectType == objectType, "OBJECT_TYPE_INVALID");
|
37
40
|
|
38
|
-
address instanceAddress =
|
41
|
+
address instanceAddress = getRegistry().getObjectInfo(info.parentNftId).objectAddress;
|
39
42
|
instance = IInstance(instanceAddress);
|
40
43
|
}
|
44
|
+
|
45
|
+
function getRegistryService() public view virtual returns (IRegistryService) {
|
46
|
+
address service = getRegistry().getServiceAddress("RegistryService", getMajorVersion());
|
47
|
+
return IRegistryService(service);
|
48
|
+
}
|
41
49
|
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Key32} from "../../types/Key32.sol";
|
5
|
+
import {StateId} from "../../types/StateId.sol";
|
6
|
+
|
7
|
+
import {IKeyValueStore} from "./IKeyValueStore.sol";
|
8
|
+
|
9
|
+
import {IComponentOwnerService} from "../service/IComponentOwnerService.sol";
|
10
|
+
import {IDistributionService} from "../service/IDistributionService.sol";
|
11
|
+
import {IProductService} from "../service/IProductService.sol";
|
12
|
+
import {IPoolService} from "../service/IPoolService.sol";
|
13
|
+
|
14
|
+
interface IInstanceBase {
|
15
|
+
function getKeyValueStore() external view returns (IKeyValueStore keyValueStore);
|
16
|
+
function updateState(Key32 key, StateId state) external;
|
17
|
+
function getState(Key32 key) external view returns (StateId state);
|
18
|
+
|
19
|
+
function getComponentOwnerService() external view returns(IComponentOwnerService);
|
20
|
+
function getDistributionService() external view returns(IDistributionService);
|
21
|
+
function getProductService() external view returns(IProductService service);
|
22
|
+
function getPoolService() external view returns(IPoolService service);
|
23
|
+
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../../types/Blocknumber.sol";
|
5
|
+
import {Key32, KeyId} from "../../types/Key32.sol";
|
6
|
+
import {NftId} from "../../types/NftId.sol";
|
7
|
+
import {ObjectType} from "../../types/ObjectType.sol";
|
8
|
+
import {StateId} from "../../types/StateId.sol";
|
9
|
+
|
10
|
+
import {ILifecycle} from "./ILifecycle.sol";
|
11
|
+
|
12
|
+
interface IKeyValueStore is ILifecycle {
|
13
|
+
|
14
|
+
struct Key {
|
15
|
+
ObjectType objectType;
|
16
|
+
KeyId id;
|
17
|
+
}
|
18
|
+
|
19
|
+
struct Value {
|
20
|
+
Metadata metadata;
|
21
|
+
bytes data;
|
22
|
+
}
|
23
|
+
|
24
|
+
struct Metadata {
|
25
|
+
ObjectType objectType;
|
26
|
+
StateId state;
|
27
|
+
address updatedBy;
|
28
|
+
Blocknumber updatedIn;
|
29
|
+
Blocknumber createdIn;
|
30
|
+
}
|
31
|
+
|
32
|
+
event LogInfoCreated(Key key, StateId state, address createdBy, address txOrigin);
|
33
|
+
event LogInfoUpdated(Key key, StateId state, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
|
34
|
+
event LogStateUpdated(Key key, StateId stateOld, StateId stateNew, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
|
35
|
+
|
36
|
+
// generic state changing functions
|
37
|
+
function create(Key32 key, ObjectType objectType, bytes memory data) external;
|
38
|
+
function update(Key32 key, StateId state, bytes memory data) external;
|
39
|
+
function updateData(Key32 key, bytes memory data) external;
|
40
|
+
function updateState(Key32 key, StateId state) external;
|
41
|
+
|
42
|
+
function exists(Key32 key) external view returns (bool);
|
43
|
+
function get(Key32 key) external view returns (Value memory value);
|
44
|
+
function getData(Key32 key) external view returns (bytes memory data);
|
45
|
+
function getMetadata(Key32 key) external view returns (Metadata memory metadata);
|
46
|
+
function getState(Key32 key) external view returns (StateId state);
|
47
|
+
|
48
|
+
function toKey32(ObjectType objectType, KeyId id) external pure returns(Key32);
|
49
|
+
function toKey(Key32 key32) external pure returns(Key memory key);
|
50
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {ObjectType} from "../../types/ObjectType.sol";
|
5
|
+
import {StateId, toStateId, zeroStateId} from "../../types/StateId.sol";
|
6
|
+
import {NftId} from "../../types/NftId.sol";
|
7
|
+
|
8
|
+
interface ILifecycle {
|
9
|
+
|
10
|
+
error ErrorNoLifecycle(NftId nftId, ObjectType objectType);
|
11
|
+
error ErrorInvalidStateTransition(
|
12
|
+
ObjectType objectType,
|
13
|
+
StateId fromStateId,
|
14
|
+
StateId toStateId
|
15
|
+
);
|
16
|
+
|
17
|
+
function hasLifecycle(
|
18
|
+
ObjectType objectType
|
19
|
+
) external view returns (bool);
|
20
|
+
|
21
|
+
function getInitialState(
|
22
|
+
ObjectType objectType
|
23
|
+
) external view returns (StateId);
|
24
|
+
|
25
|
+
function isValidTransition(
|
26
|
+
ObjectType objectType,
|
27
|
+
StateId fromId,
|
28
|
+
StateId toId
|
29
|
+
) external view returns (bool);
|
30
|
+
}
|