@etherisc/gif-next 0.0.2-ce2fc91-485 → 0.0.2-ce8407f-016
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 +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
|
-
}
|