@etherisc/gif-next 0.0.2-a7e19c7 → 0.0.2-a84e908-436
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/{Component.sol/Component.json → BaseComponent.sol/BaseComponent.json} +48 -53
- 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/components/{IPool.sol/IPoolComponent.json → IBaseComponent.sol/IBaseComponent.json} +48 -53
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +340 -0
- 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 +405 -40
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +258 -45
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
- 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 +1403 -247
- 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 +1769 -383
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +364 -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/{component/ComponentModule.sol/ComponentModule.json → base/IService.sol/IService.json} +152 -138
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +440 -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 +364 -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/{product/IProductService.sol/IProductService.json → module/component/IComponent.sol/IComponentModule.json} +56 -53
- 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/{policy → module/policy}/IPolicy.sol/IPolicyModule.json +159 -106
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +159 -106
- 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/{pool → module/pool}/IPoolModule.sol/IPoolModule.json +57 -62
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/PoolModule.sol/PoolModule.json +50 -68
- 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 +595 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +484 -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 +607 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +922 -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 +98 -85
- 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 +436 -59
- 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 +18 -63
- 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 +18 -63
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.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 +443 -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 +270 -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 +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- 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 +65 -4
- 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 +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +64 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +98 -59
- 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 +193 -32
- package/contracts/experiment/errors/Require.sol +10 -5
- package/contracts/experiment/errors/Revert.sol +13 -8
- 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 -44
- 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 +35 -51
- package/contracts/registry/IRegistryLinked.sol +8 -0
- package/contracts/registry/Registry.sol +394 -120
- 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 +94 -0
- package/contracts/shared/Proxy.sol +94 -0
- package/contracts/shared/Registerable.sol +86 -0
- package/contracts/shared/Versionable.sol +145 -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 +76 -18
- package/contracts/types/ChainId.sol +18 -10
- package/contracts/types/Fee.sol +56 -0
- package/contracts/types/Key32.sol +45 -0
- package/contracts/types/NftId.sol +48 -11
- 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 +85 -17
- package/contracts/types/UFixed.sol +78 -76
- 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/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 -147
- 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/IComponentContract.json +0 -179
- 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/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- 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/PoolModule.sol/PoolModule.dbg.json +0 -4
- 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/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 -167
- 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 -12
- package/contracts/instance/access/Access.sol +0 -218
- package/contracts/instance/access/IAccess.sol +0 -83
- package/contracts/instance/component/ComponentModule.sol +0 -248
- package/contracts/instance/component/IComponent.sol +0 -95
- package/contracts/instance/policy/IPolicy.sol +0 -66
- package/contracts/instance/policy/PolicyModule.sol +0 -107
- package/contracts/instance/pool/IPoolModule.sol +0 -41
- package/contracts/instance/pool/PoolModule.sol +0 -86
- package/contracts/instance/product/IProductService.sol +0 -46
- package/contracts/instance/product/ProductService.sol +0 -108
@@ -0,0 +1,94 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Blocknumber} from "../types/Blocknumber.sol";
|
5
|
+
import {Timestamp} from "../types/Timestamp.sol";
|
6
|
+
import {Version} from "../types/Version.sol";
|
7
|
+
|
8
|
+
|
9
|
+
/// IMPORTANT
|
10
|
+
// Upgradeable contract MUST:
|
11
|
+
// 1) inherit from Versionable
|
12
|
+
// 2) implement version() function
|
13
|
+
// 3) implement internal _initialize() function with onlyInitializing modifier
|
14
|
+
// 4) implement internal _upgrade() function with onlyInitializing modifier (1st version MUST revert)
|
15
|
+
// 5) have onlyInitialising modifier for each function callable inside _initialize()/_upgrade() (MUST use different functions for initialization/upgrade and normal operations)
|
16
|
+
// 6) use default empty constructor -> _disableInitializer() is called from Versionable contructor
|
17
|
+
// 7) use namespace storage
|
18
|
+
// 8) since now inheritance is used for upgradability, contract MUST BE inherited only by the next version
|
19
|
+
// Upgradeable contract SHOULD:
|
20
|
+
// 9) define all non private methods as virtual (in order to be able to upgrade them latter)
|
21
|
+
//
|
22
|
+
// IMPORTANT
|
23
|
+
// Each version MUST:
|
24
|
+
// 1) ALWAYS define namespace storage struct (even if no changes were introduced)
|
25
|
+
// - DO NOT use structs inside, except
|
26
|
+
// - CAN use structs ONLY inside mappings
|
27
|
+
// 2) ALWAYS define private getter (even if no changes were introduced)
|
28
|
+
// - MUST use default implementation, CAN change ONLY return type
|
29
|
+
// - MUST use the same "LOCATION_V1"
|
30
|
+
|
31
|
+
interface IVersionable {
|
32
|
+
|
33
|
+
struct VersionInfo {
|
34
|
+
Version version;
|
35
|
+
address implementation;
|
36
|
+
address activatedBy;
|
37
|
+
Timestamp activatedAt;
|
38
|
+
Blocknumber activatedIn;
|
39
|
+
}
|
40
|
+
|
41
|
+
event LogVersionableInitialized(Version version, address implementation, address activatedBy);
|
42
|
+
|
43
|
+
// TODO uncomment when all implementations are ready
|
44
|
+
/**
|
45
|
+
* @dev IMPORTANT
|
46
|
+
* implementation MUST be guarded by initializer modifier
|
47
|
+
* implementation MUST call internal function Versionable._updateVersionHistory
|
48
|
+
* new version MUST inherit from previous version
|
49
|
+
*/
|
50
|
+
function initialize(address implementation, address activatedBy, bytes memory activationData) external;
|
51
|
+
|
52
|
+
/**
|
53
|
+
* @dev
|
54
|
+
* implementation MUST be guarded by reinitializer(version().toUint64()) modifier
|
55
|
+
* implementation MUST call internal function Versionable._updateVersionHistory
|
56
|
+
* new version MUST inherit from previous version
|
57
|
+
* the first verion MUST revert
|
58
|
+
*/
|
59
|
+
function upgrade(address implementation, address activatedBy, bytes memory upgradeData) external;
|
60
|
+
|
61
|
+
/**
|
62
|
+
* @dev returns true if the specified version has been activated for the current contract
|
63
|
+
*/
|
64
|
+
function isInitialized(Version version) external view returns(bool);
|
65
|
+
|
66
|
+
/**
|
67
|
+
* @dev returns version of this contract
|
68
|
+
* each new implementation MUST implement this function
|
69
|
+
* version number MUST increase
|
70
|
+
*/
|
71
|
+
function getVersion() external pure returns(Version);
|
72
|
+
|
73
|
+
/**
|
74
|
+
* @dev returns the number of all deployed versions of this contract
|
75
|
+
*/
|
76
|
+
function getVersionCount() external view returns(uint256 numberOfVersions);
|
77
|
+
|
78
|
+
/**
|
79
|
+
* @dev returns the i-th (index) version of this contract
|
80
|
+
*/
|
81
|
+
function getVersion(uint256 index) external view returns(Version version);
|
82
|
+
|
83
|
+
/**
|
84
|
+
* @dev returns the i-th (index) version info of this contract
|
85
|
+
*/
|
86
|
+
function getVersionInfo(Version version) external view returns(VersionInfo memory versionInfo);
|
87
|
+
|
88
|
+
// TODO make sure it is needed here
|
89
|
+
/**
|
90
|
+
* @dev returns currently active version
|
91
|
+
*/
|
92
|
+
function getInitializedVersion() external view returns(uint64);
|
93
|
+
|
94
|
+
}
|
@@ -0,0 +1,94 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Ownable} from "@openzeppelin5/contracts/access/Ownable.sol";
|
5
|
+
import {ProxyAdmin} from "@openzeppelin5/contracts/proxy/transparent/ProxyAdmin.sol";
|
6
|
+
import {TransparentUpgradeableProxy, ITransparentUpgradeableProxy} from "@openzeppelin5/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
|
7
|
+
|
8
|
+
import {IVersionable} from "./IVersionable.sol";
|
9
|
+
|
10
|
+
contract ProxyWithProxyAdminGetter is TransparentUpgradeableProxy {
|
11
|
+
|
12
|
+
constructor(address implementation, address initialProxyAdminOwner, bytes memory data)
|
13
|
+
TransparentUpgradeableProxy(implementation, initialProxyAdminOwner, data)
|
14
|
+
{}
|
15
|
+
|
16
|
+
function getProxyAdmin() external returns (ProxyAdmin) { return ProxyAdmin(_proxyAdmin()); }
|
17
|
+
}
|
18
|
+
|
19
|
+
// renamed because of name collision with OZ Proxy -> local proxy type was missing in typechain-types
|
20
|
+
contract ProxyDeployer is Ownable {
|
21
|
+
|
22
|
+
event ProxyDeployed(address indexed proxy);
|
23
|
+
|
24
|
+
// TODO use contract functions selectors ???
|
25
|
+
string public constant INITIALIZE_SIGNATURE = "initialize(address,address,bytes)";
|
26
|
+
string public constant UPGRADE_SIGNATURE = "upgrade(address,address,bytes)";
|
27
|
+
|
28
|
+
ProxyWithProxyAdminGetter private _proxy;
|
29
|
+
bool private _isDeployed;
|
30
|
+
|
31
|
+
/// @dev only used to capture proxy owner
|
32
|
+
constructor()
|
33
|
+
Ownable(msg.sender)
|
34
|
+
{
|
35
|
+
}
|
36
|
+
|
37
|
+
function getDeployData(address implementation, address proxyOwner, bytes memory deployData) public pure returns (bytes memory data) {
|
38
|
+
return abi.encodeWithSignature(INITIALIZE_SIGNATURE, implementation, proxyOwner, deployData);
|
39
|
+
}
|
40
|
+
|
41
|
+
function getUpgradeData(address implementation, address proxyOwner, bytes memory upgradeData) public pure returns (bytes memory data) {
|
42
|
+
return abi.encodeWithSignature(UPGRADE_SIGNATURE, implementation, proxyOwner, upgradeData);
|
43
|
+
}
|
44
|
+
|
45
|
+
/// @dev deploy initial contract
|
46
|
+
function deploy(address initialImplementation, bytes memory deployData)
|
47
|
+
external
|
48
|
+
onlyOwner()
|
49
|
+
returns (IVersionable versionable)
|
50
|
+
{
|
51
|
+
require(!_isDeployed, "ERROR:PRX-010:ALREADY_DEPLOYED");
|
52
|
+
|
53
|
+
address currentProxyOwner = owner();
|
54
|
+
address initialProxyAdminOwner = address(this);
|
55
|
+
bytes memory data = getDeployData(initialImplementation, currentProxyOwner, deployData);
|
56
|
+
|
57
|
+
_proxy = new ProxyWithProxyAdminGetter(
|
58
|
+
initialImplementation,
|
59
|
+
initialProxyAdminOwner,
|
60
|
+
data
|
61
|
+
);
|
62
|
+
|
63
|
+
_isDeployed = true;
|
64
|
+
versionable = IVersionable(address(_proxy));
|
65
|
+
|
66
|
+
emit ProxyDeployed(address(_proxy));
|
67
|
+
}
|
68
|
+
|
69
|
+
/// @dev upgrade existing contract
|
70
|
+
function upgrade(address newImplementation, bytes memory upgradeData)
|
71
|
+
external
|
72
|
+
onlyOwner
|
73
|
+
returns (IVersionable versionable)
|
74
|
+
{
|
75
|
+
require(_isDeployed, "ERROR:PRX-020:NOT_YET_DEPLOYED");
|
76
|
+
|
77
|
+
address currentProxyOwner = owner();
|
78
|
+
// ProxyAdmin proxyAdmin = _proxy.getProxyAdmin();
|
79
|
+
ProxyAdmin proxyAdmin = getProxyAdmin();
|
80
|
+
ITransparentUpgradeableProxy proxy = ITransparentUpgradeableProxy(address(_proxy));
|
81
|
+
bytes memory data = getUpgradeData(newImplementation, currentProxyOwner, upgradeData);
|
82
|
+
|
83
|
+
proxyAdmin.upgradeAndCall(
|
84
|
+
proxy,
|
85
|
+
newImplementation,
|
86
|
+
data);
|
87
|
+
|
88
|
+
versionable = IVersionable(address(_proxy));
|
89
|
+
}
|
90
|
+
|
91
|
+
function getProxyAdmin() public returns (ProxyAdmin) {
|
92
|
+
return _proxy.getProxyAdmin();
|
93
|
+
}
|
94
|
+
}
|
@@ -0,0 +1,86 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId, zeroNftId} from "../types/NftId.sol";
|
5
|
+
import {ObjectType} from "../types/ObjectType.sol";
|
6
|
+
|
7
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
8
|
+
import {IRegisterable} from "./IRegisterable.sol";
|
9
|
+
|
10
|
+
import {ERC165} from "./ERC165.sol";
|
11
|
+
|
12
|
+
abstract contract Registerable is
|
13
|
+
ERC165,
|
14
|
+
IRegisterable
|
15
|
+
{
|
16
|
+
IRegistry internal immutable _registry;
|
17
|
+
NftId internal immutable _parentNftId;
|
18
|
+
address internal immutable _initialOwner;
|
19
|
+
|
20
|
+
modifier onlyOwner() virtual {
|
21
|
+
require(
|
22
|
+
msg.sender == getOwner(),
|
23
|
+
"ERROR:RGB-001:NOT_OWNER"
|
24
|
+
);
|
25
|
+
_;
|
26
|
+
}
|
27
|
+
|
28
|
+
constructor(
|
29
|
+
address registryAddress,
|
30
|
+
NftId parentNftId
|
31
|
+
)
|
32
|
+
ERC165()
|
33
|
+
{
|
34
|
+
require(
|
35
|
+
address(registryAddress) != address(0),
|
36
|
+
"ERROR:RGB-010:REGISTRY_ZERO"
|
37
|
+
);
|
38
|
+
|
39
|
+
_registry = IRegistry(registryAddress);
|
40
|
+
require(
|
41
|
+
_registry.supportsInterface(type(IRegistry).interfaceId),
|
42
|
+
"ERROR:RGB-011:NOT_REGISTRY"
|
43
|
+
);
|
44
|
+
|
45
|
+
_parentNftId = parentNftId;
|
46
|
+
require(
|
47
|
+
_registry.isRegistered(_parentNftId),
|
48
|
+
"ERROR:RGB-012:PARENT_NOT_REGISTERED"
|
49
|
+
);
|
50
|
+
|
51
|
+
_initialOwner = msg.sender;
|
52
|
+
|
53
|
+
// register support for IRegisterable
|
54
|
+
_registerInterface(type(IRegisterable).interfaceId);
|
55
|
+
}
|
56
|
+
|
57
|
+
// from IRegistryLinked
|
58
|
+
function register() public onlyOwner virtual override returns (NftId nftId) {
|
59
|
+
return _registry.register(address(this));
|
60
|
+
}
|
61
|
+
|
62
|
+
function getRegistry() public view virtual override returns (IRegistry registry) {
|
63
|
+
return _registry;
|
64
|
+
}
|
65
|
+
|
66
|
+
function getOwner() public view virtual override returns (address owner) {
|
67
|
+
NftId nftId = _registry.getNftId(address(this));
|
68
|
+
if(nftId == zeroNftId()) {
|
69
|
+
return _initialOwner;
|
70
|
+
}
|
71
|
+
|
72
|
+
return _registry.getOwner(nftId);
|
73
|
+
}
|
74
|
+
|
75
|
+
function getNftId() public view override returns (NftId nftId) {
|
76
|
+
return _registry.getNftId(address(this));
|
77
|
+
}
|
78
|
+
|
79
|
+
function getParentNftId() public view override returns (NftId nftId) {
|
80
|
+
return _parentNftId;
|
81
|
+
}
|
82
|
+
|
83
|
+
function getData() public view virtual override returns (bytes memory data) {
|
84
|
+
return "";
|
85
|
+
}
|
86
|
+
}
|
@@ -0,0 +1,145 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Initializable} from "@openzeppelin5/contracts/proxy/utils/Initializable.sol";
|
5
|
+
|
6
|
+
import {Blocknumber, blockNumber} from "../types/Blocknumber.sol";
|
7
|
+
import {Timestamp, blockTimestamp} from "../types/Timestamp.sol";
|
8
|
+
import {Version, VersionPart, VersionLib} from "../types/Version.sol";
|
9
|
+
|
10
|
+
import {IVersionable} from "./IVersionable.sol";
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
abstract contract Versionable is
|
15
|
+
Initializable,
|
16
|
+
IVersionable
|
17
|
+
{
|
18
|
+
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Versionable.sol")) - 1)) & ~bytes32(uint256(0xff))
|
19
|
+
bytes32 private constant VERSIONABLE_LOCATION_V1 = 0x4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900;
|
20
|
+
|
21
|
+
|
22
|
+
/// @custom:storage-location erc7201:gif-next.contracts.shared.Versionable.sol
|
23
|
+
struct VersionableStorage {
|
24
|
+
mapping(Version version => VersionInfo info) _versionHistory;
|
25
|
+
Version [] _versions;
|
26
|
+
Version _v1;
|
27
|
+
}
|
28
|
+
|
29
|
+
|
30
|
+
constructor() {
|
31
|
+
_disableInitializers();
|
32
|
+
}
|
33
|
+
|
34
|
+
function initialize(
|
35
|
+
address implementation,
|
36
|
+
address activatedBy, // TODO can it be a msg.sender ?
|
37
|
+
bytes memory data
|
38
|
+
)
|
39
|
+
public
|
40
|
+
initializer
|
41
|
+
{
|
42
|
+
_updateVersionHistory(implementation, activatedBy);
|
43
|
+
_initialize(data);
|
44
|
+
}
|
45
|
+
|
46
|
+
|
47
|
+
function upgrade(
|
48
|
+
address implementation,
|
49
|
+
address activatedBy,
|
50
|
+
bytes memory data
|
51
|
+
)
|
52
|
+
external
|
53
|
+
reinitializer(VersionLib.toUint64(getVersion()))
|
54
|
+
{
|
55
|
+
_updateVersionHistory(implementation, activatedBy);
|
56
|
+
_upgrade(data);
|
57
|
+
}
|
58
|
+
|
59
|
+
function isInitialized(Version _version) public override view returns(bool) {
|
60
|
+
return _getVersionableStorage()._versionHistory[_version].activatedIn.toInt() > 0;
|
61
|
+
}
|
62
|
+
|
63
|
+
function getVersion() public pure virtual returns(Version);
|
64
|
+
|
65
|
+
function getVersionCount() external view override returns(uint256) {
|
66
|
+
return _getVersionableStorage()._versions.length;
|
67
|
+
}
|
68
|
+
|
69
|
+
function getVersion(uint256 idx) external view override returns(Version) {
|
70
|
+
return _getVersionableStorage()._versions[idx];
|
71
|
+
}
|
72
|
+
|
73
|
+
function getVersionInfo(Version _version) external override view returns(VersionInfo memory) {
|
74
|
+
return _getVersionableStorage()._versionHistory[_version];
|
75
|
+
}
|
76
|
+
|
77
|
+
function getInitializedVersion() public view returns(uint64) {
|
78
|
+
return _getInitializedVersion();
|
79
|
+
}
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
// IMPORTANT each version must implement this function
|
84
|
+
// each implementation MUST use onlyInitialising modifier
|
85
|
+
// each implementation MUST call intializers of all base contracts...
|
86
|
+
function _initialize(bytes memory data)
|
87
|
+
internal
|
88
|
+
onlyInitializing
|
89
|
+
virtual
|
90
|
+
{}
|
91
|
+
|
92
|
+
|
93
|
+
// IMPORTANT each version except version "1" must implement this function
|
94
|
+
// each implementation MUST use onlyInitialising modifier
|
95
|
+
function _upgrade(bytes memory data)
|
96
|
+
internal
|
97
|
+
onlyInitializing
|
98
|
+
virtual
|
99
|
+
{
|
100
|
+
revert();
|
101
|
+
}
|
102
|
+
|
103
|
+
function _getVersionableStorage() private pure returns (VersionableStorage storage $) {
|
104
|
+
assembly {
|
105
|
+
$.slot := VERSIONABLE_LOCATION_V1
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
// can only be called once per contract
|
110
|
+
// needs to be called inside the proxy upgrade tx
|
111
|
+
// TODO run reinitializer(version().toUint64()) modifier after "version()" is checked,
|
112
|
+
function _updateVersionHistory(
|
113
|
+
address implementation,
|
114
|
+
address activatedBy
|
115
|
+
)
|
116
|
+
private
|
117
|
+
onlyInitializing
|
118
|
+
{
|
119
|
+
VersionableStorage storage $ = _getVersionableStorage();
|
120
|
+
|
121
|
+
uint64 version = _getInitializedVersion();
|
122
|
+
|
123
|
+
Version thisVersion = getVersion();
|
124
|
+
|
125
|
+
if(version == 1) {
|
126
|
+
// thisVersion is alias to version "1"
|
127
|
+
$._v1 = thisVersion;
|
128
|
+
}
|
129
|
+
else {
|
130
|
+
require(thisVersion > $._v1, "INVALID VERSION");
|
131
|
+
}
|
132
|
+
|
133
|
+
// update version history
|
134
|
+
$._versions.push(thisVersion);
|
135
|
+
$._versionHistory[thisVersion] = VersionInfo(
|
136
|
+
thisVersion,
|
137
|
+
implementation,
|
138
|
+
activatedBy,
|
139
|
+
blockTimestamp(),
|
140
|
+
blockNumber()
|
141
|
+
);
|
142
|
+
|
143
|
+
emit LogVersionableInitialized(thisVersion, implementation, activatedBy);
|
144
|
+
}
|
145
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Fee} from "../../contracts/types/Fee.sol";
|
5
|
+
import {NftId} from "../../contracts/types/NftId.sol";
|
6
|
+
import {Distribution} from "../../contracts/components/Distribution.sol";
|
7
|
+
|
8
|
+
|
9
|
+
contract TestDistribution is Distribution {
|
10
|
+
|
11
|
+
constructor(
|
12
|
+
address registry,
|
13
|
+
NftId instanceNftid,
|
14
|
+
address token,
|
15
|
+
bool isVerifying,
|
16
|
+
Fee memory distributionFee
|
17
|
+
)
|
18
|
+
Distribution(registry, instanceNftid, token, isVerifying, distributionFee)
|
19
|
+
// solhint-disable-next-line no-empty-blocks
|
20
|
+
{}
|
21
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {UFixed, UFixedMathLib} from "../types/UFixed.sol";
|
5
|
+
import {Fee, FeeLib} from "../types/Fee.sol";
|
6
|
+
|
7
|
+
contract TestFee {
|
8
|
+
|
9
|
+
function createFee(
|
10
|
+
uint256 fractionalValue,
|
11
|
+
int8 exponent,
|
12
|
+
uint256 fixedValue
|
13
|
+
)
|
14
|
+
external
|
15
|
+
pure
|
16
|
+
returns(Fee memory fee)
|
17
|
+
{
|
18
|
+
return FeeLib.toFee(UFixedMathLib.toUFixed(fractionalValue, exponent), fixedValue);
|
19
|
+
}
|
20
|
+
|
21
|
+
function getZeroFee() external pure returns(Fee memory fee) {
|
22
|
+
return FeeLib.zeroFee();
|
23
|
+
}
|
24
|
+
|
25
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../../contracts/types/NftId.sol";
|
5
|
+
import {UFixed} from "../../contracts/types/UFixed.sol";
|
6
|
+
import {Fee} from "../../contracts/types/Fee.sol";
|
7
|
+
import {Pool} from "../../contracts/components/Pool.sol";
|
8
|
+
|
9
|
+
|
10
|
+
contract TestPool is Pool {
|
11
|
+
|
12
|
+
constructor(
|
13
|
+
address registry,
|
14
|
+
NftId instanceNftid,
|
15
|
+
address token,
|
16
|
+
bool isVerifying,
|
17
|
+
UFixed collateralizationLevel,
|
18
|
+
Fee memory poolFee,
|
19
|
+
Fee memory stakingFee,
|
20
|
+
Fee memory performanceFee
|
21
|
+
)
|
22
|
+
Pool(registry, instanceNftid, token, isVerifying, collateralizationLevel, poolFee, stakingFee, performanceFee)
|
23
|
+
// solhint-disable-next-line no-empty-blocks
|
24
|
+
{}
|
25
|
+
}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Product} from "../../contracts/components/Product.sol";
|
5
|
+
import {NftId, toNftId} from "../../contracts/types/NftId.sol";
|
6
|
+
import {ReferralId} from "../types/ReferralId.sol";
|
7
|
+
import {RiskId} from "../../contracts/types/RiskId.sol";
|
8
|
+
import {Timestamp, blockTimestamp} from "../../contracts/types/Timestamp.sol";
|
9
|
+
import {Fee} from "../../contracts/types/Fee.sol";
|
10
|
+
|
11
|
+
contract TestProduct is Product {
|
12
|
+
|
13
|
+
event LogTestProductSender(address sender);
|
14
|
+
|
15
|
+
string public constant DEFAULT_RISK_NAME = "DEFAULT_RISK";
|
16
|
+
bool private defaultRiskCreated;
|
17
|
+
|
18
|
+
constructor(
|
19
|
+
address registry,
|
20
|
+
NftId instanceNftid,
|
21
|
+
address token,
|
22
|
+
address pool,
|
23
|
+
address distribution,
|
24
|
+
Fee memory productFee,
|
25
|
+
Fee memory processingFee
|
26
|
+
)
|
27
|
+
Product(registry, instanceNftid, token, pool, distribution, productFee, processingFee)
|
28
|
+
// solhint-disable-next-line no-empty-blocks
|
29
|
+
{
|
30
|
+
}
|
31
|
+
|
32
|
+
function getDefaultRiskId() public pure returns (RiskId) {
|
33
|
+
return _toRiskId(DEFAULT_RISK_NAME);
|
34
|
+
}
|
35
|
+
|
36
|
+
function applyForPolicy(
|
37
|
+
uint256 sumInsuredAmount,
|
38
|
+
uint256 lifetime,
|
39
|
+
NftId bundleNftId,
|
40
|
+
ReferralId referralId
|
41
|
+
)
|
42
|
+
external
|
43
|
+
returns(NftId nftId)
|
44
|
+
{
|
45
|
+
RiskId riskId = getDefaultRiskId();
|
46
|
+
bytes memory applicationData = "";
|
47
|
+
|
48
|
+
if (!defaultRiskCreated) {
|
49
|
+
_createRisk(riskId, "");
|
50
|
+
defaultRiskCreated = true;
|
51
|
+
}
|
52
|
+
|
53
|
+
nftId = _createApplication(
|
54
|
+
msg.sender, // policy holder
|
55
|
+
riskId,
|
56
|
+
sumInsuredAmount,
|
57
|
+
lifetime,
|
58
|
+
applicationData,
|
59
|
+
bundleNftId,
|
60
|
+
referralId
|
61
|
+
);
|
62
|
+
}
|
63
|
+
|
64
|
+
function underwrite(NftId nftId, bool requirePremiumPayment, Timestamp activateAt) external {
|
65
|
+
emit LogTestProductSender(msg.sender);
|
66
|
+
_underwrite(nftId, requirePremiumPayment, activateAt);
|
67
|
+
}
|
68
|
+
|
69
|
+
function collectPremium(NftId nftId, Timestamp activateAt) external {
|
70
|
+
_collectPremium(nftId, activateAt);
|
71
|
+
}
|
72
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../../contracts/types/NftId.sol";
|
5
|
+
import {ObjectType, TOKEN} from "../../contracts/types/ObjectType.sol";
|
6
|
+
import {IRegistry} from "../../contracts/registry/IRegistry.sol";
|
7
|
+
import {Registerable} from "../../contracts/shared/Registerable.sol";
|
8
|
+
|
9
|
+
contract TestRegisterable is Registerable {
|
10
|
+
|
11
|
+
constructor(address registry, NftId registryNftId)
|
12
|
+
Registerable(registry, registryNftId)
|
13
|
+
// solhint-disable-next-line no-empty-blocks
|
14
|
+
{}
|
15
|
+
|
16
|
+
function getType() external pure override returns (ObjectType) {
|
17
|
+
return TOKEN();
|
18
|
+
}
|
19
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {RoleId, RoleIdLib, PRODUCT_OWNER_ROLE_NAME, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE_NAME, POOL_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
|
5
|
+
|
6
|
+
contract TestRoleId {
|
7
|
+
function getRole(string memory roleName) external pure returns (RoleId) { return RoleIdLib.toRoleId(roleName); }
|
8
|
+
|
9
|
+
function getProductOwnerRoleName() external pure returns (string memory) { return PRODUCT_OWNER_ROLE_NAME(); }
|
10
|
+
function getProductOwnerRole() external pure returns (RoleId) { return PRODUCT_OWNER_ROLE(); }
|
11
|
+
|
12
|
+
function getPoolOwnerRoleName() external pure returns (string memory) { return POOL_OWNER_ROLE_NAME(); }
|
13
|
+
function getPoolOwnerRole() external pure returns (RoleId) { return POOL_OWNER_ROLE(); }
|
14
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../../contracts/types/NftId.sol";
|
5
|
+
import {Version, VersionLib} from "../../contracts/types/Version.sol";
|
6
|
+
import {ServiceBase} from "../../contracts/instance/base/ServiceBase.sol";
|
7
|
+
|
8
|
+
import {IVersionable} from "../../contracts/shared/IVersionable.sol";
|
9
|
+
import {Versionable} from "../../contracts/shared/Versionable.sol";
|
10
|
+
|
11
|
+
contract TestService is ServiceBase {
|
12
|
+
|
13
|
+
string public constant NAME = "TestService";
|
14
|
+
|
15
|
+
constructor(address registry, NftId registryNftId)
|
16
|
+
ServiceBase(registry, registryNftId)
|
17
|
+
// solhint-disable-next-line no-empty-blocks
|
18
|
+
{}
|
19
|
+
|
20
|
+
function getVersion()
|
21
|
+
public
|
22
|
+
pure
|
23
|
+
virtual override (IVersionable, Versionable)
|
24
|
+
returns(Version)
|
25
|
+
{
|
26
|
+
return VersionLib.toVersion(3,0,0);
|
27
|
+
}
|
28
|
+
|
29
|
+
function getName() external pure override returns(string memory name) {
|
30
|
+
return NAME;
|
31
|
+
}
|
32
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
|
5
|
+
|
6
|
+
contract TestUsdc is ERC20 {
|
7
|
+
|
8
|
+
// https://etherscan.io/token/0xc719d010b63e5bbf2c0551872cd5316ed26acd83#readContract
|
9
|
+
string public constant NAME = "USDC - Test";
|
10
|
+
string public constant SYMBOL = "USDC";
|
11
|
+
uint8 public constant DECIMALS = 6;
|
12
|
+
uint256 public constant INITIAL_SUPPLY = 10**9 * 10**DECIMALS; // 1 Billion 1'000'000'000
|
13
|
+
// decimals == 18 (openzeppelin erc20 default)
|
14
|
+
constructor()
|
15
|
+
ERC20(NAME, SYMBOL)
|
16
|
+
{
|
17
|
+
_mint(
|
18
|
+
_msgSender(),
|
19
|
+
INITIAL_SUPPLY
|
20
|
+
);
|
21
|
+
}
|
22
|
+
|
23
|
+
function decimals() public pure override returns(uint8) {
|
24
|
+
return DECIMALS;
|
25
|
+
}
|
26
|
+
}
|