@etherisc/gif-next 0.0.2-ed4dd55 → 0.0.2-efef0ea-320
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 +178 -6
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{IPool.sol/IPoolComponent.json → BaseComponent.sol/BaseComponent.json} +55 -60
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +405 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
- package/artifacts/contracts/{instance/component/IComponent.sol/IComponentContract.json → components/IBaseComponent.sol/IBaseComponent.json} +54 -59
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → components/IDistributionComponent.sol/IDistributionComponent.json} +164 -151
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +487 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +370 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +417 -34
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +273 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +4 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +105 -0
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +4 -0
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +105 -0
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
- 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 +4 -0
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1427 -271
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1827 -364
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +387 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +560 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IService.sol/IService.json +341 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +463 -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/base/ModuleBase.sol/ModuleBase.json +10 -0
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +387 -0
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +297 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +297 -0
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +117 -0
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponent.json +1 -1
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +117 -0
- 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/distribution/IDistribution.sol/IDistribution.json +10 -0
- 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 +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +284 -0
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +284 -0
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPool.json +1 -1
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +144 -0
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +144 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.json +10 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +113 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +131 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +10 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +511 -0
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +76 -0
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +511 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +618 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +507 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +405 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +366 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +481 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +671 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +630 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +945 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +65 -2
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +115 -89
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +24 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +244 -77
- package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +724 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
- package/artifacts/contracts/{registry/IRegistry.sol → shared/IOwnable.sol}/IOwnable.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
- package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegisterable.sol}/IRegisterable.json +22 -67
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +205 -0
- package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.dbg.json +4 -0
- package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.json +248 -0
- package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +4 -0
- package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.json +129 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
- package/artifacts/contracts/{registry/Registry.sol → shared/Registerable.sol}/Registerable.json +23 -68
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +251 -0
- package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +4 -0
- package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +228 -0
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +4 -0
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +405 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +578 -0
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +575 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +137 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
- package/artifacts/contracts/test/TestService.sol/TestService.json +466 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +293 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.json +338 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +174 -0
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +148 -5
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
- 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 +4 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +236 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +479 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
- package/contracts/components/BaseComponent.sol +94 -0
- package/contracts/components/Distribution.sol +132 -0
- package/contracts/components/IBaseComponent.sol +19 -0
- package/contracts/components/IDistributionComponent.sol +47 -0
- package/contracts/components/IPoolComponent.sol +71 -0
- package/contracts/components/IProductComponent.sol +38 -0
- package/contracts/components/Pool.sol +222 -16
- package/contracts/components/Product.sol +195 -33
- package/contracts/experiment/errors/Require.sol +38 -0
- package/contracts/experiment/errors/Revert.sol +44 -0
- package/contracts/experiment/inheritance/A.sol +8 -11
- package/contracts/experiment/inheritance/B.sol +10 -5
- package/contracts/experiment/inheritance/C.sol +11 -5
- package/contracts/experiment/inheritance/IA.sol +2 -7
- package/contracts/experiment/inheritance/IB.sol +3 -2
- package/contracts/experiment/inheritance/IC.sol +4 -3
- package/contracts/experiment/statemachine/Dummy.sol +27 -0
- package/contracts/experiment/statemachine/ISM.sol +25 -0
- package/contracts/experiment/statemachine/README.md +112 -0
- package/contracts/experiment/statemachine/SM.sol +57 -0
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
- package/contracts/experiment/types/TypeA.sol +14 -9
- package/contracts/experiment/types/TypeB.sol +14 -9
- package/contracts/instance/IInstance.sol +41 -8
- package/contracts/instance/IInstanceLinked.sol +8 -0
- package/contracts/instance/Instance.sol +54 -43
- package/contracts/instance/base/ComponentServiceBase.sol +42 -0
- package/contracts/instance/base/IInstanceBase.sol +22 -0
- package/contracts/instance/base/IKeyValueStore.sol +50 -0
- package/contracts/instance/base/ILifecycle.sol +30 -0
- package/contracts/instance/base/IService.sol +15 -0
- package/contracts/instance/base/InstanceBase.sol +91 -0
- package/contracts/instance/base/KeyValueStore.sol +161 -0
- package/contracts/instance/base/Lifecycle.sol +100 -0
- package/contracts/instance/base/ModuleBase.sol +57 -0
- package/contracts/instance/base/ServiceBase.sol +37 -0
- package/contracts/instance/module/access/Access.sol +149 -0
- package/contracts/instance/module/access/IAccess.sol +53 -0
- package/contracts/instance/module/bundle/BundleModule.sol +134 -0
- package/contracts/instance/module/bundle/IBundle.sol +53 -0
- package/contracts/instance/module/component/ComponentModule.sol +70 -0
- package/contracts/instance/module/component/IComponent.sol +28 -0
- 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 +63 -0
- package/contracts/instance/module/policy/PolicyModule.sol +91 -0
- package/contracts/instance/module/pool/IPoolModule.sol +40 -0
- package/contracts/instance/module/pool/PoolModule.sol +90 -0
- package/contracts/instance/module/risk/IRisk.sol +26 -0
- package/contracts/instance/module/risk/RiskModule.sol +62 -0
- package/contracts/instance/module/treasury/ITreasury.sol +82 -0
- package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
- package/contracts/instance/module/treasury/TreasuryModule.sol +138 -0
- package/contracts/instance/service/ComponentOwnerService.sol +157 -0
- package/contracts/instance/service/DistributionService.sol +59 -0
- package/contracts/instance/service/IComponentOwnerService.sol +22 -0
- package/contracts/instance/service/IDistributionService.sol +12 -0
- package/contracts/instance/service/IPoolService.sol +37 -0
- package/contracts/instance/service/IProductService.sol +107 -0
- package/contracts/instance/service/PoolService.sol +149 -0
- package/contracts/instance/service/ProductService.sol +509 -0
- package/contracts/registry/ChainNft.sol +80 -94
- package/contracts/registry/IChainNft.sol +10 -7
- package/contracts/registry/IRegistry.sol +40 -51
- package/contracts/registry/IRegistryLinked.sol +8 -0
- package/contracts/registry/Registry.sol +312 -107
- package/contracts/registry/RegistryUpgradeable.sol +488 -0
- package/contracts/shared/ERC165.sol +21 -0
- package/contracts/shared/IOwnable.sol +6 -0
- package/contracts/shared/IRegisterable.sol +24 -0
- package/contracts/shared/IVersionable.sol +65 -0
- package/contracts/shared/Proxy.sol +94 -0
- package/contracts/shared/Registerable.sol +86 -0
- package/contracts/shared/Versionable.sol +99 -0
- package/contracts/shared/VersionableUpgradeable.sol +136 -0
- package/contracts/test/TestDistribution.sol +21 -0
- package/contracts/test/TestFee.sol +25 -0
- package/contracts/test/TestPool.sol +25 -0
- package/contracts/test/TestProduct.sol +72 -0
- package/contracts/test/TestRegisterable.sol +19 -0
- package/contracts/test/TestRoleId.sol +14 -0
- package/contracts/test/TestService.sol +32 -0
- package/contracts/test/TestToken.sol +26 -0
- package/contracts/test/TestVersion.sol +44 -0
- package/contracts/test/TestVersionable.sol +17 -0
- package/contracts/test/Usdc.sol +26 -0
- package/contracts/types/AddressSet.sol +58 -0
- package/contracts/types/Blocknumber.sol +118 -0
- package/contracts/types/ChainId.sol +24 -10
- package/contracts/types/Fee.sol +56 -0
- package/contracts/types/Key32.sol +45 -0
- package/contracts/types/NftId.sol +55 -8
- package/contracts/types/NftIdSet.sol +60 -0
- package/contracts/types/ObjectType.sol +131 -0
- package/contracts/types/ReferralId.sol +48 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +38 -0
- package/contracts/types/StateId.sol +101 -0
- package/contracts/types/Timestamp.sol +123 -0
- package/contracts/types/UFixed.sol +209 -0
- package/contracts/types/Version.sol +103 -0
- package/package.json +19 -5
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/Component.json +0 -179
- package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
- package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
- package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
- package/contracts/components/Component.sol +0 -62
- package/contracts/components/IPool.sol +0 -9
- package/contracts/components/IProduct.sol +0 -11
- package/contracts/instance/access/Access.sol +0 -218
- package/contracts/instance/access/IAccess.sol +0 -83
- package/contracts/instance/component/ComponentModule.sol +0 -259
- package/contracts/instance/component/IComponent.sol +0 -94
- package/contracts/instance/policy/IPolicy.sol +0 -66
- package/contracts/instance/policy/PolicyModule.sol +0 -106
- package/contracts/instance/pool/IPoolModule.sol +0 -40
- package/contracts/instance/pool/PoolModule.sol +0 -83
- package/contracts/instance/product/IProductService.sol +0 -45
- package/contracts/instance/product/ProductService.sol +0 -105
@@ -1,65 +1,227 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import {
|
4
|
+
import {IRisk} from "../instance/module/risk/IRisk.sol";
|
5
|
+
import {ITreasury} from "../instance/module/treasury/ITreasury.sol";
|
6
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
7
|
+
import {IProductComponent} from "./IProductComponent.sol";
|
8
|
+
import {NftId} from "../types/NftId.sol";
|
9
|
+
import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
|
10
|
+
import {ReferralId} from "../types/ReferralId.sol";
|
11
|
+
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
12
|
+
import {StateId} from "../types/StateId.sol";
|
13
|
+
import {Timestamp} from "../types/Timestamp.sol";
|
14
|
+
import {Fee} from "../types/Fee.sol";
|
15
|
+
import {BaseComponent} from "./BaseComponent.sol";
|
7
16
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
address private _pool;
|
17
|
+
contract Product is BaseComponent, IProductComponent {
|
18
|
+
IProductService internal _productService;
|
19
|
+
address internal _pool;
|
20
|
+
address internal _distribution;
|
21
|
+
Fee internal _initialProductFee;
|
22
|
+
Fee internal _initialProcessingFee;
|
15
23
|
|
16
24
|
constructor(
|
17
|
-
address registry,
|
18
|
-
|
19
|
-
address
|
20
|
-
|
21
|
-
|
22
|
-
|
25
|
+
address registry,
|
26
|
+
NftId instanceNftid,
|
27
|
+
address token,
|
28
|
+
address pool,
|
29
|
+
address distribution,
|
30
|
+
Fee memory productFee,
|
31
|
+
Fee memory processingFee
|
32
|
+
) BaseComponent(registry, instanceNftid, token) {
|
33
|
+
// TODO add validation
|
23
34
|
_productService = _instance.getProductService();
|
24
35
|
_pool = pool;
|
36
|
+
_distribution = distribution;
|
37
|
+
_initialProductFee = productFee;
|
38
|
+
_initialProcessingFee = processingFee;
|
25
39
|
}
|
26
40
|
|
27
|
-
|
28
|
-
|
41
|
+
|
42
|
+
function calculatePremium(
|
29
43
|
uint256 sumInsuredAmount,
|
30
|
-
|
44
|
+
RiskId riskId,
|
31
45
|
uint256 lifetime,
|
32
|
-
|
46
|
+
bytes memory applicationData,
|
47
|
+
ReferralId referralId,
|
48
|
+
NftId bundleNftId
|
33
49
|
)
|
34
|
-
|
35
|
-
|
50
|
+
external
|
51
|
+
view
|
52
|
+
override
|
53
|
+
returns (uint256 premiumAmount)
|
36
54
|
{
|
55
|
+
(premiumAmount,,,,) = _productService.calculatePremium(
|
56
|
+
riskId,
|
57
|
+
sumInsuredAmount,
|
58
|
+
lifetime,
|
59
|
+
applicationData,
|
60
|
+
bundleNftId,
|
61
|
+
referralId
|
62
|
+
);
|
63
|
+
}
|
64
|
+
|
65
|
+
|
66
|
+
function calculateNetPremium(
|
67
|
+
uint256 sumInsuredAmount,
|
68
|
+
RiskId riskId,
|
69
|
+
uint256 lifetime,
|
70
|
+
bytes memory applicationData
|
71
|
+
)
|
72
|
+
external
|
73
|
+
view
|
74
|
+
virtual override
|
75
|
+
returns (uint256 netPremiumAmount)
|
76
|
+
{
|
77
|
+
// default 10% of sum insured
|
78
|
+
return sumInsuredAmount / 10;
|
79
|
+
}
|
80
|
+
|
81
|
+
function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
|
82
|
+
return RiskIdLib.toRiskId(riskName);
|
83
|
+
}
|
84
|
+
|
85
|
+
function _createRisk(
|
86
|
+
RiskId id,
|
87
|
+
bytes memory data
|
88
|
+
) internal {
|
89
|
+
_productService.createRisk(
|
90
|
+
id,
|
91
|
+
data
|
92
|
+
);
|
93
|
+
}
|
94
|
+
|
95
|
+
function _setRiskInfo(
|
96
|
+
RiskId id,
|
97
|
+
IRisk.RiskInfo memory info
|
98
|
+
) internal {
|
99
|
+
_productService.setRiskInfo(
|
100
|
+
id,
|
101
|
+
info
|
102
|
+
);
|
103
|
+
}
|
104
|
+
|
105
|
+
function _updateRiskState(
|
106
|
+
RiskId id,
|
107
|
+
StateId state
|
108
|
+
) internal {
|
109
|
+
_productService.updateRiskState(
|
110
|
+
id,
|
111
|
+
state
|
112
|
+
);
|
113
|
+
}
|
114
|
+
|
115
|
+
function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
|
116
|
+
return _instance.getRiskInfo(id);
|
117
|
+
}
|
118
|
+
|
119
|
+
function _createApplication(
|
120
|
+
address applicationOwner,
|
121
|
+
RiskId riskId,
|
122
|
+
uint256 sumInsuredAmount,
|
123
|
+
uint256 lifetime,
|
124
|
+
bytes memory applicationData,
|
125
|
+
NftId bundleNftId,
|
126
|
+
ReferralId referralId
|
127
|
+
) internal returns (NftId nftId) {
|
37
128
|
nftId = _productService.createApplication(
|
38
129
|
applicationOwner,
|
130
|
+
riskId,
|
39
131
|
sumInsuredAmount,
|
40
|
-
premiumAmount,
|
41
132
|
lifetime,
|
42
|
-
|
133
|
+
applicationData,
|
134
|
+
bundleNftId,
|
135
|
+
referralId
|
43
136
|
);
|
44
137
|
}
|
45
138
|
|
46
|
-
function _underwrite(
|
139
|
+
function _underwrite(
|
140
|
+
NftId policyNftId,
|
141
|
+
bool requirePremiumPayment,
|
142
|
+
Timestamp activateAt
|
143
|
+
)
|
47
144
|
internal
|
48
145
|
{
|
49
|
-
_productService.underwrite(
|
146
|
+
_productService.underwrite(
|
147
|
+
policyNftId,
|
148
|
+
requirePremiumPayment,
|
149
|
+
activateAt);
|
50
150
|
}
|
51
151
|
|
52
|
-
function
|
152
|
+
function _collectPremium(
|
153
|
+
NftId policyNftId,
|
154
|
+
Timestamp activateAt
|
155
|
+
)
|
156
|
+
internal
|
157
|
+
{
|
158
|
+
_productService.collectPremium(
|
159
|
+
policyNftId,
|
160
|
+
activateAt);
|
161
|
+
}
|
162
|
+
|
163
|
+
function _activate(
|
164
|
+
NftId policyNftId,
|
165
|
+
Timestamp activateAt
|
166
|
+
)
|
167
|
+
internal
|
168
|
+
{
|
169
|
+
_productService.activate(
|
170
|
+
policyNftId,
|
171
|
+
activateAt);
|
172
|
+
}
|
173
|
+
|
174
|
+
function getPoolNftId() external view override returns (NftId poolNftId) {
|
53
175
|
return _registry.getNftId(_pool);
|
54
176
|
}
|
55
177
|
|
56
|
-
|
57
|
-
|
58
|
-
|
178
|
+
function getDistributionNftId() external view override returns (NftId distributionNftId) {
|
179
|
+
return _registry.getNftId(_distribution);
|
180
|
+
}
|
181
|
+
|
182
|
+
// from product component
|
183
|
+
function setFees(
|
184
|
+
Fee memory productFee,
|
185
|
+
Fee memory processingFee
|
186
|
+
)
|
187
|
+
external
|
188
|
+
onlyOwner
|
189
|
+
override
|
190
|
+
{
|
191
|
+
_productService.setFees(productFee, processingFee);
|
192
|
+
}
|
193
|
+
|
194
|
+
|
195
|
+
function getProductFee()
|
196
|
+
external
|
197
|
+
view
|
198
|
+
override
|
199
|
+
returns (Fee memory productFee)
|
200
|
+
{
|
201
|
+
NftId productNftId = getNftId();
|
202
|
+
if (_instance.hasTreasuryInfo(productNftId)) {
|
203
|
+
return _instance.getTreasuryInfo(productNftId).productFee;
|
204
|
+
} else {
|
205
|
+
return _initialProductFee;
|
206
|
+
}
|
207
|
+
}
|
208
|
+
|
209
|
+
function getProcessingFee()
|
210
|
+
external
|
211
|
+
view
|
212
|
+
override
|
213
|
+
returns (Fee memory processingFee)
|
214
|
+
{
|
215
|
+
NftId productNftId = getNftId();
|
216
|
+
if (_instance.hasTreasuryInfo(productNftId)) {
|
217
|
+
return _instance.getTreasuryInfo(productNftId).processingFee;
|
218
|
+
} else {
|
219
|
+
return _initialProcessingFee;
|
220
|
+
}
|
59
221
|
}
|
60
222
|
|
61
223
|
// from registerable
|
62
|
-
function
|
63
|
-
return
|
224
|
+
function getType() public pure override returns (ObjectType) {
|
225
|
+
return PRODUCT();
|
64
226
|
}
|
65
|
-
}
|
227
|
+
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
contract Require {
|
5
|
+
error AsmallerThanB_S();
|
6
|
+
error AsmallerThanB_M(uint a);
|
7
|
+
error AsmallerThanB_L(uint a, uint b);
|
8
|
+
|
9
|
+
uint256 private _b;
|
10
|
+
|
11
|
+
constructor() {
|
12
|
+
_b = 42;
|
13
|
+
}
|
14
|
+
|
15
|
+
function isAlargerThanBRequire_S(
|
16
|
+
uint a
|
17
|
+
) external view returns (bool isLarger) {
|
18
|
+
require(a > _b, "ERROR:ABC-001");
|
19
|
+
|
20
|
+
return true;
|
21
|
+
}
|
22
|
+
|
23
|
+
function isAlargerThanBRequire_M(
|
24
|
+
uint a
|
25
|
+
) external view returns (bool isLarger) {
|
26
|
+
require(a > _b, "ERROR:ABC-002:A_IS_SMALLER");
|
27
|
+
|
28
|
+
return true;
|
29
|
+
}
|
30
|
+
|
31
|
+
function isAlargerThanBRequire_L(
|
32
|
+
uint a
|
33
|
+
) external view returns (bool isLarger) {
|
34
|
+
require(a > _b, "ERROR:ABC-003:A_IS_SMALLER_THAN_B");
|
35
|
+
|
36
|
+
return true;
|
37
|
+
}
|
38
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
contract Revert {
|
5
|
+
error AsmallerThanB_S();
|
6
|
+
error AsmallerThanB_M(uint a);
|
7
|
+
error AsmallerThanB_L(uint a, uint b);
|
8
|
+
|
9
|
+
uint256 private _b;
|
10
|
+
|
11
|
+
constructor() {
|
12
|
+
_b = 42;
|
13
|
+
}
|
14
|
+
|
15
|
+
function isAlargerThanBRevert_S(
|
16
|
+
uint a
|
17
|
+
) external view returns (bool isLarger) {
|
18
|
+
if (a <= _b) {
|
19
|
+
revert AsmallerThanB_S();
|
20
|
+
}
|
21
|
+
|
22
|
+
return true;
|
23
|
+
}
|
24
|
+
|
25
|
+
function isAlargerThanBRevert_M(
|
26
|
+
uint a
|
27
|
+
) external view returns (bool isLarger) {
|
28
|
+
if (a <= _b) {
|
29
|
+
revert AsmallerThanB_M(a);
|
30
|
+
}
|
31
|
+
|
32
|
+
return true;
|
33
|
+
}
|
34
|
+
|
35
|
+
function isAlargerThanBRevert_L(
|
36
|
+
uint a
|
37
|
+
) external view returns (bool isLarger) {
|
38
|
+
if (a <= _b) {
|
39
|
+
revert AsmallerThanB_L(a, _b);
|
40
|
+
}
|
41
|
+
|
42
|
+
return true;
|
43
|
+
}
|
44
|
+
}
|
@@ -35,22 +35,19 @@ a.setC(20);
|
|
35
35
|
*/
|
36
36
|
|
37
37
|
contract AShared is ISharedA {
|
38
|
-
|
39
38
|
uint256 private _x;
|
40
39
|
|
41
40
|
constructor() {
|
42
41
|
_x = 42;
|
43
42
|
}
|
44
43
|
|
45
|
-
function getA() external view override returns(uint256) {
|
46
|
-
|
47
|
-
}
|
48
|
-
|
49
|
-
contract A is
|
50
|
-
AShared,
|
51
|
-
B,
|
52
|
-
C,
|
53
|
-
IA
|
54
|
-
{
|
44
|
+
function getA() external view override returns (uint256) {
|
45
|
+
return _x;
|
46
|
+
}
|
55
47
|
|
48
|
+
function setA(uint256 newA) external override {
|
49
|
+
_x = newA;
|
50
|
+
}
|
56
51
|
}
|
52
|
+
|
53
|
+
contract A is AShared, B, C, IA {}
|
@@ -5,7 +5,6 @@ import {ISharedA} from "./IA.sol";
|
|
5
5
|
import {IB} from "./IB.sol";
|
6
6
|
|
7
7
|
abstract contract B is ISharedA, IB {
|
8
|
-
|
9
8
|
// names of private variables can be re-used in inheritance
|
10
9
|
uint256 private _x;
|
11
10
|
|
@@ -14,10 +13,16 @@ abstract contract B is ISharedA, IB {
|
|
14
13
|
}
|
15
14
|
|
16
15
|
// access own state
|
17
|
-
function getB() external view override returns(uint256) {
|
18
|
-
|
16
|
+
function getB() external view override returns (uint256) {
|
17
|
+
return _x;
|
18
|
+
}
|
19
19
|
|
20
|
-
|
21
|
-
|
20
|
+
function setB(uint256 newB) external override {
|
21
|
+
_x = newB;
|
22
|
+
}
|
22
23
|
|
24
|
+
// access state from parent contract A
|
25
|
+
function getAfromB() external view override returns (uint256) {
|
26
|
+
return this.getA();
|
27
|
+
}
|
23
28
|
}
|
@@ -6,7 +6,6 @@ import {IB} from "./IB.sol";
|
|
6
6
|
import {IC} from "./IC.sol";
|
7
7
|
|
8
8
|
abstract contract C is ISharedA, IC {
|
9
|
-
|
10
9
|
uint256 private _x;
|
11
10
|
|
12
11
|
constructor() {
|
@@ -14,14 +13,21 @@ abstract contract C is ISharedA, IC {
|
|
14
13
|
}
|
15
14
|
|
16
15
|
// access own state
|
17
|
-
function getC() external view override returns(uint256) {
|
18
|
-
|
16
|
+
function getC() external view override returns (uint256) {
|
17
|
+
return _x;
|
18
|
+
}
|
19
|
+
|
20
|
+
function setC(uint256 newC) external override {
|
21
|
+
_x = newC;
|
22
|
+
}
|
19
23
|
|
20
24
|
// access state from parent contract A
|
21
|
-
function getAfromC() external view override returns(uint256) {
|
25
|
+
function getAfromC() external view override returns (uint256) {
|
26
|
+
return this.getA();
|
27
|
+
}
|
22
28
|
|
23
29
|
// access state from other module B
|
24
|
-
function getBfromC() external view override returns(uint256) {
|
30
|
+
function getBfromC() external view override returns (uint256) {
|
25
31
|
IB b = IB(address(this));
|
26
32
|
return b.getB();
|
27
33
|
}
|
@@ -5,14 +5,9 @@ import {IB} from "./IB.sol";
|
|
5
5
|
import {IC} from "./IC.sol";
|
6
6
|
|
7
7
|
interface ISharedA {
|
8
|
+
function getA() external view returns (uint256);
|
8
9
|
|
9
|
-
function getA() external view returns(uint256);
|
10
10
|
function setA(uint256 newA) external;
|
11
11
|
}
|
12
12
|
|
13
|
-
interface IA is
|
14
|
-
ISharedA,
|
15
|
-
IB,
|
16
|
-
IC
|
17
|
-
{
|
18
|
-
}
|
13
|
+
interface IA is ISharedA, IB, IC {}
|
@@ -2,8 +2,9 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
interface IB {
|
5
|
+
function getAfromB() external view returns (uint256);
|
6
|
+
|
7
|
+
function getB() external view returns (uint256);
|
5
8
|
|
6
|
-
function getAfromB() external view returns(uint256);
|
7
|
-
function getB() external view returns(uint256);
|
8
9
|
function setB(uint256 newA) external;
|
9
10
|
}
|
@@ -2,10 +2,11 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
interface IC {
|
5
|
+
function getAfromC() external view returns (uint256);
|
5
6
|
|
6
|
-
function
|
7
|
-
|
7
|
+
function getBfromC() external view returns (uint256);
|
8
|
+
|
9
|
+
function getC() external view returns (uint256);
|
8
10
|
|
9
|
-
function getC() external view returns(uint256);
|
10
11
|
function setC(uint256 newA) external;
|
11
12
|
}
|
@@ -0,0 +1,27 @@
|
|
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
|
+
|
7
|
+
contract LifeCycleModule {
|
8
|
+
mapping(ObjectType objectType => StateId initialState)
|
9
|
+
private _initialState;
|
10
|
+
|
11
|
+
mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
|
12
|
+
private _isValidTransition;
|
13
|
+
|
14
|
+
function getInitialState(
|
15
|
+
ObjectType objectType
|
16
|
+
) external view returns (StateId) {
|
17
|
+
return _initialState[objectType];
|
18
|
+
}
|
19
|
+
|
20
|
+
function isValidTransition(
|
21
|
+
ObjectType objectType,
|
22
|
+
StateId fromId,
|
23
|
+
StateId toId
|
24
|
+
) external view returns (bool) {
|
25
|
+
return _isValidTransition[objectType][fromId][toId];
|
26
|
+
}
|
27
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {StateId} from "../../types/StateId.sol";
|
5
|
+
|
6
|
+
interface ISMEE {
|
7
|
+
error ErrorInitialStateUndefined();
|
8
|
+
error ErrorStartStateUndefined();
|
9
|
+
error ErrorNextStateUndefined();
|
10
|
+
error ErrorStateChangeInvalid(StateId currentStateId, StateId newStateId);
|
11
|
+
|
12
|
+
event LogInitialStateSet(StateId initialStateId);
|
13
|
+
event LogStateChanged(StateId oldStateId, StateId newStateId);
|
14
|
+
}
|
15
|
+
|
16
|
+
interface ISM is ISMEE {
|
17
|
+
function changeToState(StateId newStateId) external;
|
18
|
+
|
19
|
+
function isValidTransition(
|
20
|
+
StateId currentStateId,
|
21
|
+
StateId newStateId
|
22
|
+
) external view returns (bool isValid);
|
23
|
+
|
24
|
+
function getState() external view returns (StateId currentStateId);
|
25
|
+
}
|
@@ -0,0 +1,112 @@
|
|
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
|