@etherisc/gif-next 0.0.2-ce2fc91-485 → 0.0.2-ce8407f-016
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +71 -25
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +115 -48
- 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 +1 -1907
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2428 -1138
- 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 +878 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +117 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +50 -55
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IService.sol/IService.json +174 -53
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +156 -112
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +4 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +220 -52
- 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/{access/IAccess.sol/IAccess.json → IDistribution.sol/IDistribution.json} +2 -2
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
- package/artifacts/contracts/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 +298 -39
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +745 -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 +489 -120
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1013 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +476 -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/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- 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 +5 -111
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +283 -62
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +103 -23
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +50 -11
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
- 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/IBaseComponent.sol +4 -4
- 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 +3 -49
- package/contracts/instance/Instance.sol +378 -54
- package/contracts/instance/InstanceAccessManager.sol +288 -0
- package/contracts/instance/InstanceReader.sol +235 -0
- package/contracts/instance/InstanceService.sol +45 -0
- package/contracts/instance/base/IKeyValueStore.sol +10 -11
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +50 -18
- package/contracts/instance/base/Lifecycle.sol +16 -11
- package/contracts/instance/base/ServiceBase.sol +20 -13
- 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 +41 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/registry/ChainNft.sol +43 -15
- package/contracts/registry/IChainNft.sol +3 -2
- package/contracts/registry/IRegistry.sol +42 -26
- package/contracts/registry/IRegistryService.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +384 -274
- package/contracts/registry/RegistryService.sol +369 -0
- package/contracts/registry/RegistryServiceManager.sol +43 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/ERC165.sol +1 -1
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +9 -16
- 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/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +113 -55
- package/contracts/test/TestRegisterable.sol +5 -6
- package/contracts/test/TestRoleId.sol +6 -6
- package/contracts/test/TestService.sol +5 -11
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +8 -3
- package/contracts/types/Key32.sol +8 -3
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +44 -11
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +47 -10
- package/contracts/types/StateId.sol +1 -1
- package/contracts/types/Timestamp.sol +7 -3
- package/contracts/types/Version.sol +9 -0
- package/package.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.json +0 -305
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -326
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.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 -296
- 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 -296
- 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/ICompensation.json +0 -10
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -241
- 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 -241
- 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 -271
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -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/risk/IRisk.sol/IRisk.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.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 -533
- 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 -533
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -507
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -376
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +0 -477
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
- 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/contracts/components/BaseComponent.sol +0 -88
- package/contracts/components/IPoolComponent.sol +0 -57
- package/contracts/components/IProductComponent.sol +0 -19
- package/contracts/components/Pool.sol +0 -174
- package/contracts/components/Product.sol +0 -117
- package/contracts/experiment/statemachine/README.md +0 -112
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/ComponentServiceBase.sol +0 -42
- package/contracts/instance/base/IInstanceBase.sol +0 -14
- package/contracts/instance/base/InstanceBase.sol +0 -80
- package/contracts/instance/base/ModuleBase.sol +0 -52
- 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 -136
- package/contracts/instance/module/bundle/IBundle.sol +0 -58
- package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
- package/contracts/instance/module/compensation/ICompensation.sol +0 -10
- package/contracts/instance/module/component/ComponentModule.sol +0 -104
- package/contracts/instance/module/component/IComponent.sol +0 -63
- package/contracts/instance/module/policy/IPolicy.sol +0 -61
- package/contracts/instance/module/policy/PolicyModule.sol +0 -77
- package/contracts/instance/module/pool/IPoolModule.sol +0 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -87
- package/contracts/instance/module/risk/IRisk.sol +0 -10
- package/contracts/instance/module/risk/RiskModule.sol +0 -8
- package/contracts/instance/module/treasury/ITreasury.sol +0 -103
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
- package/contracts/instance/service/ComponentOwnerService.sol +0 -176
- package/contracts/instance/service/IComponentOwnerService.sol +0 -22
- package/contracts/instance/service/IPoolService.sol +0 -30
- package/contracts/instance/service/IProductService.sol +0 -58
- package/contracts/instance/service/PoolService.sol +0 -123
- package/contracts/instance/service/ProductService.sol +0 -354
- package/contracts/registry/IRegistryLinked.sol +0 -8
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/test/TestPool.sol +0 -22
- package/contracts/test/TestProduct.sol +0 -44
@@ -1,174 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {ObjectType, POOL} from "../types/ObjectType.sol";
|
5
|
-
import {IProductService} from "../instance/service/IProductService.sol";
|
6
|
-
import {IPoolService} from "../instance/service/IPoolService.sol";
|
7
|
-
import {NftId} from "../types/NftId.sol";
|
8
|
-
import {Fee} from "../types/Fee.sol";
|
9
|
-
import {UFixed} from "../types/UFixed.sol";
|
10
|
-
import {IPoolComponent} from "./IPoolComponent.sol";
|
11
|
-
import {BaseComponent} from "./BaseComponent.sol";
|
12
|
-
|
13
|
-
contract Pool is BaseComponent, IPoolComponent {
|
14
|
-
|
15
|
-
bool internal _isVerifying;
|
16
|
-
UFixed internal _collateralizationLevel;
|
17
|
-
|
18
|
-
// may be used to interact with instance by derived contracts
|
19
|
-
IPoolService internal _poolService;
|
20
|
-
|
21
|
-
// only relevant to protect callback functions for "active" pools
|
22
|
-
IProductService private _productService;
|
23
|
-
|
24
|
-
modifier onlyPoolService() {
|
25
|
-
require(
|
26
|
-
msg.sender == address(_poolService),
|
27
|
-
"ERROR:POL-001:NOT_POOL_SERVICE");
|
28
|
-
_;
|
29
|
-
}
|
30
|
-
|
31
|
-
modifier onlyProductService() {
|
32
|
-
require(
|
33
|
-
msg.sender == address(_productService),
|
34
|
-
"ERROR:POL-002:NOT_PRODUCT_SERVICE");
|
35
|
-
_;
|
36
|
-
}
|
37
|
-
|
38
|
-
constructor(
|
39
|
-
address registry,
|
40
|
-
NftId instanceNftId,
|
41
|
-
// TODO refactor into tokenNftId
|
42
|
-
address token,
|
43
|
-
bool verifying,
|
44
|
-
UFixed collateralizationLevel
|
45
|
-
)
|
46
|
-
BaseComponent(registry, instanceNftId, token)
|
47
|
-
{
|
48
|
-
_isVerifying = verifying;
|
49
|
-
// TODO add validation
|
50
|
-
_collateralizationLevel = collateralizationLevel;
|
51
|
-
|
52
|
-
_poolService = _instance.getPoolService();
|
53
|
-
_productService = _instance.getProductService();
|
54
|
-
}
|
55
|
-
|
56
|
-
function createBundle(
|
57
|
-
uint256 initialAmount,
|
58
|
-
uint256 lifetime,
|
59
|
-
bytes memory filter
|
60
|
-
)
|
61
|
-
external
|
62
|
-
virtual override
|
63
|
-
returns(NftId bundleNftId)
|
64
|
-
{
|
65
|
-
address owner = msg.sender;
|
66
|
-
bundleNftId = _poolService.createBundle(
|
67
|
-
owner,
|
68
|
-
initialAmount,
|
69
|
-
lifetime,
|
70
|
-
filter
|
71
|
-
);
|
72
|
-
|
73
|
-
// TODO add logging
|
74
|
-
}
|
75
|
-
|
76
|
-
/**
|
77
|
-
* @dev see {IPool.underwrite}.
|
78
|
-
* Default implementation that only writes a {LogUnderwrittenByPool} entry.
|
79
|
-
*/
|
80
|
-
function underwrite(
|
81
|
-
NftId policyNftId,
|
82
|
-
bytes memory policyData,
|
83
|
-
bytes memory bundleFilter,
|
84
|
-
uint256 collateralizationAmount
|
85
|
-
)
|
86
|
-
external
|
87
|
-
onlyProductService
|
88
|
-
virtual override
|
89
|
-
{
|
90
|
-
_underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
|
91
|
-
}
|
92
|
-
|
93
|
-
/**
|
94
|
-
* @dev see {IPoolComponent.policyMatchesBundle}.
|
95
|
-
* Default implementation always returns true
|
96
|
-
*/
|
97
|
-
function policyMatchesBundle(
|
98
|
-
bytes memory, // policyData
|
99
|
-
bytes memory // bundleFilter
|
100
|
-
)
|
101
|
-
public
|
102
|
-
view
|
103
|
-
virtual override
|
104
|
-
returns (bool isMatching)
|
105
|
-
{
|
106
|
-
return true;
|
107
|
-
}
|
108
|
-
|
109
|
-
|
110
|
-
function isVerifying() external view override returns (bool verifying) {
|
111
|
-
return _isVerifying;
|
112
|
-
}
|
113
|
-
|
114
|
-
function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
|
115
|
-
return _collateralizationLevel;
|
116
|
-
}
|
117
|
-
|
118
|
-
function _underwrite(
|
119
|
-
NftId policyNftId,
|
120
|
-
bytes memory policyData,
|
121
|
-
bytes memory bundleFilter,
|
122
|
-
uint256 collateralizationAmount
|
123
|
-
)
|
124
|
-
internal
|
125
|
-
{
|
126
|
-
require(
|
127
|
-
policyMatchesBundle(policyData, bundleFilter),
|
128
|
-
"ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
|
129
|
-
);
|
130
|
-
|
131
|
-
emit LogUnderwrittenByPool(policyNftId, collateralizationAmount, address(this));
|
132
|
-
}
|
133
|
-
|
134
|
-
function _createBundle(
|
135
|
-
address bundleOwner,
|
136
|
-
uint256 amount,
|
137
|
-
uint256 lifetime,
|
138
|
-
bytes calldata filter
|
139
|
-
)
|
140
|
-
internal
|
141
|
-
returns(NftId bundleNftId)
|
142
|
-
{
|
143
|
-
bundleNftId = _poolService.createBundle(
|
144
|
-
bundleOwner,
|
145
|
-
amount,
|
146
|
-
lifetime,
|
147
|
-
filter
|
148
|
-
);
|
149
|
-
}
|
150
|
-
|
151
|
-
// from pool component
|
152
|
-
function getStakingFee()
|
153
|
-
external
|
154
|
-
view
|
155
|
-
override
|
156
|
-
returns (Fee memory stakingFee)
|
157
|
-
{
|
158
|
-
return _instance.getPoolSetup(getNftId()).stakingFee;
|
159
|
-
}
|
160
|
-
|
161
|
-
function getPerformanceFee()
|
162
|
-
external
|
163
|
-
view
|
164
|
-
override
|
165
|
-
returns (Fee memory performanceFee)
|
166
|
-
{
|
167
|
-
return _instance.getPoolSetup(getNftId()).performanceFee;
|
168
|
-
}
|
169
|
-
|
170
|
-
// from registerable
|
171
|
-
function getType() public pure override returns (ObjectType) {
|
172
|
-
return POOL();
|
173
|
-
}
|
174
|
-
}
|
@@ -1,117 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IProductService} from "../instance/service/IProductService.sol";
|
5
|
-
import {IProductComponent} from "./IProductComponent.sol";
|
6
|
-
import {NftId} from "../types/NftId.sol";
|
7
|
-
import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
|
8
|
-
import {Timestamp} from "../types/Timestamp.sol";
|
9
|
-
import {Fee} from "../types/Fee.sol";
|
10
|
-
import {BaseComponent} from "./BaseComponent.sol";
|
11
|
-
|
12
|
-
contract Product is BaseComponent, IProductComponent {
|
13
|
-
IProductService private _productService;
|
14
|
-
address private _pool;
|
15
|
-
|
16
|
-
constructor(
|
17
|
-
address registry,
|
18
|
-
NftId instanceNftid,
|
19
|
-
address token,
|
20
|
-
address pool
|
21
|
-
) BaseComponent(registry, instanceNftid, token) {
|
22
|
-
// TODO add validation
|
23
|
-
_productService = _instance.getProductService();
|
24
|
-
_pool = pool;
|
25
|
-
}
|
26
|
-
|
27
|
-
function _createApplication(
|
28
|
-
address applicationOwner,
|
29
|
-
uint256 sumInsuredAmount,
|
30
|
-
uint256 premiumAmount,
|
31
|
-
uint256 lifetime,
|
32
|
-
NftId bundleNftId
|
33
|
-
) internal returns (NftId nftId) {
|
34
|
-
nftId = _productService.createApplication(
|
35
|
-
applicationOwner,
|
36
|
-
sumInsuredAmount,
|
37
|
-
premiumAmount,
|
38
|
-
lifetime,
|
39
|
-
bundleNftId
|
40
|
-
);
|
41
|
-
}
|
42
|
-
|
43
|
-
function _underwrite(
|
44
|
-
NftId policyNftId,
|
45
|
-
bool requirePremiumPayment,
|
46
|
-
Timestamp activateAt
|
47
|
-
)
|
48
|
-
internal
|
49
|
-
{
|
50
|
-
_productService.underwrite(
|
51
|
-
policyNftId,
|
52
|
-
requirePremiumPayment,
|
53
|
-
activateAt);
|
54
|
-
}
|
55
|
-
|
56
|
-
function _collectPremium(
|
57
|
-
NftId policyNftId,
|
58
|
-
Timestamp activateAt
|
59
|
-
)
|
60
|
-
internal
|
61
|
-
{
|
62
|
-
_productService.collectPremium(
|
63
|
-
policyNftId,
|
64
|
-
activateAt);
|
65
|
-
}
|
66
|
-
|
67
|
-
function _activate(
|
68
|
-
NftId policyNftId,
|
69
|
-
Timestamp activateAt
|
70
|
-
)
|
71
|
-
internal
|
72
|
-
{
|
73
|
-
_productService.activate(
|
74
|
-
policyNftId,
|
75
|
-
activateAt);
|
76
|
-
}
|
77
|
-
|
78
|
-
function getPoolNftId() external view override returns (NftId poolNftId) {
|
79
|
-
return _registry.getNftId(_pool);
|
80
|
-
}
|
81
|
-
|
82
|
-
// from product component
|
83
|
-
function setFees(
|
84
|
-
Fee memory policyFee,
|
85
|
-
Fee memory processingFee
|
86
|
-
)
|
87
|
-
external
|
88
|
-
onlyOwner
|
89
|
-
override
|
90
|
-
{
|
91
|
-
_productService.setFees(policyFee, processingFee);
|
92
|
-
}
|
93
|
-
|
94
|
-
|
95
|
-
function getPolicyFee()
|
96
|
-
external
|
97
|
-
view
|
98
|
-
override
|
99
|
-
returns (Fee memory policyFee)
|
100
|
-
{
|
101
|
-
return _instance.getProductSetup(getNftId()).policyFee;
|
102
|
-
}
|
103
|
-
|
104
|
-
function getProcessingFee()
|
105
|
-
external
|
106
|
-
view
|
107
|
-
override
|
108
|
-
returns (Fee memory processingFee)
|
109
|
-
{
|
110
|
-
return _instance.getProductSetup(getNftId()).processingFee;
|
111
|
-
}
|
112
|
-
|
113
|
-
// from registerable
|
114
|
-
function getType() public pure override returns (ObjectType) {
|
115
|
-
return PRODUCT();
|
116
|
-
}
|
117
|
-
}
|
@@ -1,112 +0,0 @@
|
|
1
|
-
# State Machines
|
2
|
-
|
3
|
-
Most GIF objects have a life cycle defined by a state machine.
|
4
|
-
|
5
|
-
For each object type the set of possible states is defined together with its initial state and the set of valid state transitions.
|
6
|
-
|
7
|
-
## Object Types without States
|
8
|
-
|
9
|
-
* Protocol
|
10
|
-
* Chains
|
11
|
-
* Registries (both chain and main registry)
|
12
|
-
|
13
|
-
## Object Types with States
|
14
|
-
|
15
|
-
* Tokens
|
16
|
-
* Instances
|
17
|
-
* Products
|
18
|
-
* Oracles
|
19
|
-
* Pools
|
20
|
-
* Bundles
|
21
|
-
* Policies
|
22
|
-
* Claim (non-NFT)
|
23
|
-
* Payout (non-NFT)
|
24
|
-
|
25
|
-
### Simple State Machine
|
26
|
-
|
27
|
-
Valid states
|
28
|
-
|
29
|
-
* Active (initial state)
|
30
|
-
* Paused
|
31
|
-
* Archived (final state)
|
32
|
-
|
33
|
-
Valid state transitions:
|
34
|
-
|
35
|
-
* Active -> Paused
|
36
|
-
* Paused -> Active
|
37
|
-
* Paused -> Archived
|
38
|
-
|
39
|
-
|
40
|
-
Candidate object types for simple state machine
|
41
|
-
|
42
|
-
* Token
|
43
|
-
* Instance
|
44
|
-
* Product
|
45
|
-
* Oracle
|
46
|
-
* Pool
|
47
|
-
|
48
|
-
To discuss:
|
49
|
-
|
50
|
-
* Archived is final state
|
51
|
-
* What mechanism should exist to revert an unintended transition to 'Archived' state. Should there be such a mechanism?
|
52
|
-
* What mechanism should exist when the NFT of such an object is burned prematurely. Should there be such a mechanism
|
53
|
-
|
54
|
-
### Bundle State Machine
|
55
|
-
|
56
|
-
Valid states
|
57
|
-
|
58
|
-
* Active (initial state)
|
59
|
-
* Paused
|
60
|
-
* Expired (implicit state)
|
61
|
-
* Closed (final state)
|
62
|
-
|
63
|
-
Expired is not an explicit state.
|
64
|
-
A bundle is expired for block.timestamp >= expiredAt
|
65
|
-
|
66
|
-
### Policy State Machine
|
67
|
-
|
68
|
-
Valid states
|
69
|
-
|
70
|
-
* Applied (initial state)
|
71
|
-
* Revoked (final state)
|
72
|
-
* Declined (final state)
|
73
|
-
* Active
|
74
|
-
* Expired (implicit state)
|
75
|
-
* Closed (final state)
|
76
|
-
|
77
|
-
Expired is not an explicit state.
|
78
|
-
A policy is expired for block.timestamp >= expiredAt
|
79
|
-
|
80
|
-
To discuss:
|
81
|
-
|
82
|
-
* Should 'Closed' be less explicit using a closedAt state variable?
|
83
|
-
* Or even more lighweight? ie. block.timestamp >= expiredAt and no open claims
|
84
|
-
|
85
|
-
Valid state transitions:
|
86
|
-
|
87
|
-
* Applied -> Revoked
|
88
|
-
* Applied -> Declined
|
89
|
-
* Applied -> Active
|
90
|
-
* Active -> Closed (needs to be expired)
|
91
|
-
|
92
|
-
### Claim State Machine
|
93
|
-
|
94
|
-
Valid states
|
95
|
-
* Applied (initial state)
|
96
|
-
* Confirmed
|
97
|
-
* Declined (final state)
|
98
|
-
* Closed (final state)
|
99
|
-
|
100
|
-
Valid state transitions:
|
101
|
-
* Applied -> Confirmed
|
102
|
-
* Applied -> Declined
|
103
|
-
* Confirmed -> Closed
|
104
|
-
|
105
|
-
### Payout State Machine
|
106
|
-
|
107
|
-
Valid states
|
108
|
-
* Expected
|
109
|
-
* PaidOut
|
110
|
-
|
111
|
-
Valid state transitions:
|
112
|
-
* Expected -> PaidOut
|
@@ -1,42 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
|
-
import {IInstance} from "../../instance/IInstance.sol";
|
6
|
-
import {ObjectType, INSTANCE, PRODUCT, POOL} from "../../types/ObjectType.sol";
|
7
|
-
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
8
|
-
|
9
|
-
import {ServiceBase} from "./ServiceBase.sol";
|
10
|
-
|
11
|
-
abstract contract ComponentServiceBase is ServiceBase {
|
12
|
-
|
13
|
-
constructor(
|
14
|
-
address registry,
|
15
|
-
NftId registryNftId
|
16
|
-
)
|
17
|
-
ServiceBase(registry, registryNftId)
|
18
|
-
// solhint-disable-next-line no-empty-blocks
|
19
|
-
{
|
20
|
-
}
|
21
|
-
|
22
|
-
|
23
|
-
function _getAndVerifyComponentInfoAndInstance(
|
24
|
-
ObjectType objectType
|
25
|
-
)
|
26
|
-
internal
|
27
|
-
view
|
28
|
-
returns(
|
29
|
-
IRegistry.ObjectInfo memory info,
|
30
|
-
IInstance instance
|
31
|
-
)
|
32
|
-
{
|
33
|
-
NftId componentNftId = _registry.getNftId(msg.sender);
|
34
|
-
require(componentNftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
|
35
|
-
|
36
|
-
info = _registry.getObjectInfo(componentNftId);
|
37
|
-
require(info.objectType == objectType, "OBJECT_TYPE_INVALID");
|
38
|
-
|
39
|
-
address instanceAddress = _registry.getObjectInfo(info.parentNftId).objectAddress;
|
40
|
-
instance = IInstance(instanceAddress);
|
41
|
-
}
|
42
|
-
}
|
@@ -1,14 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IKeyValueStore} from "./IKeyValueStore.sol";
|
5
|
-
import {IComponentOwnerService} from "../service/IComponentOwnerService.sol";
|
6
|
-
import {IProductService} from "../service/IProductService.sol";
|
7
|
-
import {IPoolService} from "../service/IPoolService.sol";
|
8
|
-
|
9
|
-
interface IInstanceBase {
|
10
|
-
function getKeyValueStore() external view returns (IKeyValueStore keyValueStore);
|
11
|
-
function getComponentOwnerService() external view returns(IComponentOwnerService service);
|
12
|
-
function getProductService() external view returns(IProductService service);
|
13
|
-
function getPoolService() external view returns(IPoolService service);
|
14
|
-
}
|
@@ -1,80 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {Versionable} from "../../shared/Versionable.sol";
|
5
|
-
import {Registerable} from "../../shared/Registerable.sol";
|
6
|
-
// import {IRegistry} from "../registry/IRegistry.sol";
|
7
|
-
|
8
|
-
// import {IInstance} from "./IInstance.sol";
|
9
|
-
import {ObjectType, INSTANCE} from "../../types/ObjectType.sol";
|
10
|
-
import {NftId} from "../../types/NftId.sol";
|
11
|
-
import {Version, VersionPart, VersionLib} from "../../types/Version.sol";
|
12
|
-
|
13
|
-
import {IComponentOwnerService} from "../service/IComponentOwnerService.sol";
|
14
|
-
import {IProductService} from "../service/IProductService.sol";
|
15
|
-
import {IPoolService} from "../service/IPoolService.sol";
|
16
|
-
|
17
|
-
import {IKeyValueStore} from "./IKeyValueStore.sol";
|
18
|
-
import {IInstance} from "../IInstance.sol";
|
19
|
-
import {IInstanceBase} from "./IInstanceBase.sol";
|
20
|
-
|
21
|
-
import {KeyValueStore} from "./KeyValueStore.sol";
|
22
|
-
|
23
|
-
abstract contract InstanceBase is
|
24
|
-
Versionable,
|
25
|
-
Registerable,
|
26
|
-
IInstanceBase
|
27
|
-
{
|
28
|
-
IKeyValueStore internal _keyValueStore;
|
29
|
-
|
30
|
-
IComponentOwnerService internal _componentOwnerService;
|
31
|
-
IProductService internal _productService;
|
32
|
-
IPoolService internal _poolService;
|
33
|
-
|
34
|
-
constructor(
|
35
|
-
address registry,
|
36
|
-
NftId registryNftId
|
37
|
-
)
|
38
|
-
Registerable(registry, registryNftId)
|
39
|
-
Versionable()
|
40
|
-
{
|
41
|
-
_keyValueStore = new KeyValueStore();
|
42
|
-
|
43
|
-
_registerInterface(type(IInstance).interfaceId);
|
44
|
-
_linkToServicesInRegistry();
|
45
|
-
}
|
46
|
-
|
47
|
-
function getKeyValueStore() public view virtual override returns (IKeyValueStore keyValueStore) { return _keyValueStore; }
|
48
|
-
|
49
|
-
// from versionable
|
50
|
-
function getVersion()
|
51
|
-
public
|
52
|
-
pure
|
53
|
-
virtual override
|
54
|
-
returns(Version)
|
55
|
-
{
|
56
|
-
return VersionLib.toVersion(3,0,0);
|
57
|
-
}
|
58
|
-
|
59
|
-
// from registerable
|
60
|
-
function getType() external pure override returns (ObjectType objectType) {
|
61
|
-
return INSTANCE();
|
62
|
-
}
|
63
|
-
|
64
|
-
|
65
|
-
// internal / private functions
|
66
|
-
function _linkToServicesInRegistry() internal {
|
67
|
-
VersionPart majorVersion = getVersion().toMajorPart();
|
68
|
-
_componentOwnerService = IComponentOwnerService(_getAndCheck("ComponentOwnerService", majorVersion));
|
69
|
-
_productService = IProductService(_getAndCheck("ProductService", majorVersion));
|
70
|
-
_poolService = IPoolService(_getAndCheck("PoolService", majorVersion));
|
71
|
-
}
|
72
|
-
|
73
|
-
function _getAndCheck(string memory serviceName, VersionPart majorVersion) internal view returns (address serviceAddress) {
|
74
|
-
serviceAddress = _registry.getServiceAddress(serviceName, majorVersion);
|
75
|
-
require(
|
76
|
-
serviceAddress != address(0),
|
77
|
-
"ERROR:INS-001:NOT_REGISTERED"
|
78
|
-
);
|
79
|
-
}
|
80
|
-
}
|
@@ -1,52 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
|
-
|
6
|
-
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
7
|
-
import {Key32, KeyId} from "../../types/Key32.sol";
|
8
|
-
import {LibNftIdSet} from "../../types/NftIdSet.sol";
|
9
|
-
import {NftId} from "../../types/NftId.sol";
|
10
|
-
import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../types/ObjectType.sol";
|
11
|
-
import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, REVOKED, DECLINED} from "../../types/StateId.sol";
|
12
|
-
import {Timestamp, blockTimestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
13
|
-
|
14
|
-
import {IKeyValueStore} from "./IKeyValueStore.sol";
|
15
|
-
|
16
|
-
abstract contract ModuleBase {
|
17
|
-
|
18
|
-
IKeyValueStore private _store;
|
19
|
-
ObjectType private _type;
|
20
|
-
|
21
|
-
function _initialize(IKeyValueStore keyValueStore, ObjectType objectType) internal {
|
22
|
-
_store = keyValueStore;
|
23
|
-
_type = objectType;
|
24
|
-
}
|
25
|
-
|
26
|
-
function _create(NftId nftId, bytes memory data) internal {
|
27
|
-
_store.create(
|
28
|
-
_toKey32(nftId),
|
29
|
-
_type,
|
30
|
-
data);
|
31
|
-
}
|
32
|
-
|
33
|
-
function _updateData(NftId nftId, bytes memory data) internal {
|
34
|
-
_store.updateData(_toKey32(nftId), data);
|
35
|
-
}
|
36
|
-
|
37
|
-
function _updateState(NftId nftId, StateId state) internal {
|
38
|
-
_store.updateState(_toKey32(nftId), state);
|
39
|
-
}
|
40
|
-
|
41
|
-
function _getData(NftId nftId) internal view returns(bytes memory data) {
|
42
|
-
return _store.getData(_toKey32(nftId));
|
43
|
-
}
|
44
|
-
|
45
|
-
function _getState(NftId nftId) internal view returns(StateId) {
|
46
|
-
return _store.getState(_toKey32(nftId));
|
47
|
-
}
|
48
|
-
|
49
|
-
function _toKey32(NftId nftId) internal view returns (Key32 key32) {
|
50
|
-
return nftId.toKey32(_type);
|
51
|
-
}
|
52
|
-
}
|