@etherisc/gif-next 0.0.2-d408403-475 → 0.0.2-d48ae55-246
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 +303 -27
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +897 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +1142 -114
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/IComponent.sol/IComponent.json} +292 -224
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +639 -29
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +526 -119
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +512 -69
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +1033 -245
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +975 -129
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1430 -1050
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +674 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2060 -1122
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +984 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1386 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1260 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +610 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +754 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1117 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1318 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +586 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +896 -116
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +614 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +638 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +798 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +372 -41
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +784 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +188 -116
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +185 -266
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1378 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +642 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +532 -118
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +574 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +490 -341
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +574 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +466 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1055 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +470 -103
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1407 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +601 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +531 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +62 -72
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +69 -57
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +125 -32
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +69 -0
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IService.sol/IService.json} +181 -111
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +303 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +269 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +499 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +318 -24
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +105 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/shared/Service.sol/Service.json +627 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +333 -24
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +436 -56
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +103 -23
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
- package/contracts/components/Component.sol +236 -0
- package/contracts/components/Distribution.sol +230 -46
- package/contracts/components/IComponent.sol +50 -0
- package/contracts/components/IDistributionComponent.sol +58 -6
- package/contracts/components/IPoolComponent.sol +55 -39
- package/contracts/components/IProductComponent.sol +10 -9
- package/contracts/components/Pool.sol +170 -151
- package/contracts/components/Product.sol +118 -67
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/BundleManager.sol +125 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +78 -45
- package/contracts/instance/IInstanceService.sol +59 -0
- package/contracts/instance/Instance.sol +266 -59
- package/contracts/instance/InstanceAccessManager.sol +297 -0
- package/contracts/instance/InstanceReader.sol +293 -0
- package/contracts/instance/InstanceService.sol +442 -0
- package/contracts/instance/InstanceServiceManager.sol +54 -0
- package/contracts/instance/ObjectManager.sol +84 -0
- package/contracts/instance/base/ComponentService.sol +134 -0
- package/contracts/instance/base/IKeyValueStore.sol +13 -14
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +49 -38
- package/contracts/instance/base/Lifecycle.sol +1 -1
- package/contracts/instance/module/IAccess.sol +47 -0
- package/contracts/instance/module/IBundle.sol +20 -0
- package/contracts/instance/module/IDistribution.sol +39 -0
- package/contracts/instance/module/IPolicy.sol +45 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/instance/module/ISetup.sol +47 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ApplicationService.sol +268 -0
- package/contracts/instance/service/BundleService.sol +298 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/DistributionService.sol +257 -25
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +54 -0
- package/contracts/instance/service/IDistributionService.sol +54 -1
- package/contracts/instance/service/IPolicyService.sol +88 -0
- package/contracts/instance/service/IPoolService.sol +7 -24
- package/contracts/instance/service/IProductService.sol +9 -76
- package/contracts/instance/service/PolicyService.sol +524 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +76 -116
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +158 -434
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +79 -36
- package/contracts/registry/IRegistry.sol +66 -24
- package/contracts/registry/IRegistryService.sol +67 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +366 -284
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +277 -0
- package/contracts/registry/RegistryServiceManager.sol +62 -0
- package/contracts/registry/ReleaseManager.sol +331 -0
- package/contracts/registry/TokenRegistry.sol +113 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/ERC165.sol +13 -8
- package/contracts/shared/INftOwnable.sol +28 -0
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +10 -19
- package/contracts/shared/IRegistryLinked.sol +15 -0
- package/contracts/shared/IService.sol +16 -0
- package/contracts/shared/IVersionable.sol +55 -11
- package/contracts/shared/NftOwnable.sol +190 -0
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +95 -0
- package/contracts/shared/Registerable.sol +58 -63
- package/contracts/shared/RegistryLinked.sol +64 -0
- package/contracts/shared/Service.sol +60 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +113 -54
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRegisterable.sol +5 -6
- package/contracts/test/TestRoleId.sol +1 -1
- package/contracts/test/TestService.sol +7 -14
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +3 -3
- package/contracts/types/Key32.sol +8 -3
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +40 -15
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RoleId.sol +61 -9
- package/contracts/types/StateId.sol +5 -1
- package/contracts/types/Timestamp.sol +7 -3
- package/contracts/types/UFixed.sol +128 -12
- package/contracts/types/Version.sol +13 -1
- package/package.json +6 -5
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -376
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -531
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -94
- package/contracts/components/IBaseComponent.sol +0 -19
- package/contracts/experiment/statemachine/README.md +0 -112
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/ComponentServiceBase.sol +0 -42
- package/contracts/instance/base/IInstanceBase.sol +0 -22
- package/contracts/instance/base/IService.sol +0 -15
- package/contracts/instance/base/InstanceBase.sol +0 -91
- package/contracts/instance/base/ModuleBase.sol +0 -57
- package/contracts/instance/base/ServiceBase.sol +0 -37
- package/contracts/instance/module/access/Access.sol +0 -149
- package/contracts/instance/module/access/IAccess.sol +0 -53
- package/contracts/instance/module/bundle/BundleModule.sol +0 -134
- package/contracts/instance/module/bundle/IBundle.sol +0 -53
- package/contracts/instance/module/component/ComponentModule.sol +0 -70
- package/contracts/instance/module/component/IComponent.sol +0 -28
- package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
- package/contracts/instance/module/distribution/IDistribution.sol +0 -10
- package/contracts/instance/module/policy/IPolicy.sol +0 -63
- package/contracts/instance/module/policy/PolicyModule.sol +0 -91
- package/contracts/instance/module/pool/IPoolModule.sol +0 -40
- package/contracts/instance/module/pool/PoolModule.sol +0 -90
- package/contracts/instance/module/risk/IRisk.sol +0 -26
- package/contracts/instance/module/risk/RiskModule.sol +0 -62
- package/contracts/instance/module/treasury/ITreasury.sol +0 -82
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
- package/contracts/instance/service/ComponentOwnerService.sol +0 -157
- package/contracts/instance/service/IComponentOwnerService.sol +0 -22
- package/contracts/registry/IChainNft.sol +0 -21
- package/contracts/registry/IRegistryLinked.sol +0 -8
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/test/TestDistribution.sol +0 -21
- package/contracts/test/TestPool.sol +0 -25
- package/contracts/test/TestProduct.sol +0 -72
- package/contracts/types/ReferralId.sol +0 -48
@@ -0,0 +1,60 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {ObjectType, SERVICE} from "../types/ObjectType.sol";
|
5
|
+
import {NftId, zeroNftId} from "../types/NftId.sol";
|
6
|
+
import {Version, VersionPart, VersionLib} from "../types/Version.sol";
|
7
|
+
|
8
|
+
import {Versionable} from "./Versionable.sol";
|
9
|
+
import {IService} from "./IService.sol";
|
10
|
+
import {IVersionable} from "./IVersionable.sol";
|
11
|
+
import {Versionable} from "./Versionable.sol";
|
12
|
+
import {Registerable} from "./Registerable.sol";
|
13
|
+
|
14
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
15
|
+
|
16
|
+
|
17
|
+
/// @dev service base contract
|
18
|
+
abstract contract Service is
|
19
|
+
Registerable,
|
20
|
+
Versionable,
|
21
|
+
IService
|
22
|
+
{
|
23
|
+
function getDomain() public pure virtual override returns(ObjectType);
|
24
|
+
|
25
|
+
function getMajorVersion() public view virtual override returns(VersionPart majorVersion) {
|
26
|
+
return getVersion().toMajorPart();
|
27
|
+
}
|
28
|
+
|
29
|
+
// from Versionable
|
30
|
+
function getVersion()
|
31
|
+
public
|
32
|
+
pure
|
33
|
+
virtual override (IVersionable, Versionable)
|
34
|
+
returns(Version)
|
35
|
+
{
|
36
|
+
return VersionLib.toVersion(3,0,0);
|
37
|
+
}
|
38
|
+
|
39
|
+
function initializeService(
|
40
|
+
address registry,
|
41
|
+
address initialOwner
|
42
|
+
)
|
43
|
+
public
|
44
|
+
virtual
|
45
|
+
onlyInitializing()
|
46
|
+
{
|
47
|
+
// service must provide its name and version upon registration
|
48
|
+
bytes memory data = abi.encode(getDomain(), getMajorVersion());
|
49
|
+
NftId registryNftId = _getRegistryNftId(registry);
|
50
|
+
bool isInterceptor = false;
|
51
|
+
|
52
|
+
initializeRegisterable(registry, registryNftId, SERVICE(), isInterceptor, initialOwner, data);
|
53
|
+
registerInterface(type(IService).interfaceId);
|
54
|
+
}
|
55
|
+
|
56
|
+
// this is just a conveniene function, actual validation will be done upon registration
|
57
|
+
function _getRegistryNftId(address registryAddress) internal view returns (NftId) {
|
58
|
+
return IRegistry(registryAddress).getNftId(registryAddress);
|
59
|
+
}
|
60
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
6
|
+
|
7
|
+
contract TokenHandler {
|
8
|
+
IERC20Metadata private _token;
|
9
|
+
|
10
|
+
constructor(address token) {
|
11
|
+
_token = IERC20Metadata(token);
|
12
|
+
}
|
13
|
+
|
14
|
+
// TODO add logging
|
15
|
+
function transfer(
|
16
|
+
address from,
|
17
|
+
address to,
|
18
|
+
uint256 amount // TODO add authz (only treasury/instance/product/pool/ service)
|
19
|
+
) external {
|
20
|
+
SafeERC20.safeTransferFrom(_token, from, to, amount);
|
21
|
+
// _token.transferFrom(from, to, amount);
|
22
|
+
}
|
23
|
+
|
24
|
+
function getToken() external view returns (IERC20Metadata) {
|
25
|
+
return _token;
|
26
|
+
}
|
27
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
|
5
|
+
import {TransparentUpgradeableProxy, ITransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
|
6
|
+
|
7
|
+
import {IVersionable} from "./IVersionable.sol";
|
8
|
+
|
9
|
+
contract UpgradableProxyWithAdmin is TransparentUpgradeableProxy {
|
10
|
+
|
11
|
+
constructor(address implementation, address initialProxyAdminOwner, bytes memory data)
|
12
|
+
TransparentUpgradeableProxy(implementation, initialProxyAdminOwner, data)
|
13
|
+
{}
|
14
|
+
|
15
|
+
function getProxyAdmin() external returns (ProxyAdmin) { return ProxyAdmin(_proxyAdmin()); }
|
16
|
+
}
|
@@ -1,89 +1,148 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
3
5
|
|
4
6
|
import {Blocknumber, blockNumber} from "../types/Blocknumber.sol";
|
5
|
-
import {Timestamp,
|
6
|
-
import {Version, VersionPart} from "../types/Version.sol";
|
7
|
+
import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
|
8
|
+
import {Version, VersionPart, VersionLib} from "../types/Version.sol";
|
7
9
|
|
8
10
|
import {IVersionable} from "./IVersionable.sol";
|
9
11
|
|
10
|
-
abstract contract Versionable is IVersionable {
|
11
12
|
|
12
|
-
mapping(Version version => VersionInfo info) private _versionHistory;
|
13
|
-
Version [] private _versions;
|
14
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;
|
15
20
|
|
16
|
-
|
17
|
-
|
18
|
-
|
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;
|
19
27
|
}
|
20
28
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
external
|
25
|
-
override
|
26
|
-
{
|
27
|
-
_activate(implementation, activatedBy);
|
29
|
+
|
30
|
+
constructor() {
|
31
|
+
_disableInitializers();
|
28
32
|
}
|
33
|
+
// TODO write test where new version of private _updateVersionHistory is added and used...
|
29
34
|
|
35
|
+
function initializeVersionable(
|
36
|
+
address implementation,
|
37
|
+
address activatedBy,
|
38
|
+
bytes memory data
|
39
|
+
)
|
40
|
+
public
|
41
|
+
initializer
|
42
|
+
{
|
43
|
+
_updateVersionHistory(implementation, activatedBy);
|
44
|
+
_initialize(activatedBy, data);
|
45
|
+
}
|
30
46
|
|
31
|
-
//
|
32
|
-
|
33
|
-
function _activate(
|
47
|
+
// TODO activatedBy MUST ALWAYS be an owner?
|
48
|
+
function upgradeVersionable(
|
34
49
|
address implementation,
|
35
|
-
address activatedBy
|
50
|
+
address activatedBy,
|
51
|
+
bytes memory data
|
36
52
|
)
|
37
|
-
|
53
|
+
external
|
54
|
+
reinitializer(VersionLib.toUint64(getVersion()))
|
38
55
|
{
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
"ERROR:VRN-001:VERSION_ALREADY_ACTIVATED"
|
43
|
-
);
|
44
|
-
|
45
|
-
// require increasing version number
|
46
|
-
if(_versions.length > 0) {
|
47
|
-
Version lastVersion = _versions[_versions.length - 1];
|
48
|
-
require(
|
49
|
-
thisVersion > lastVersion,
|
50
|
-
"ERROR:VRN-002:VERSION_NOT_INCREASING"
|
51
|
-
);
|
52
|
-
}
|
56
|
+
_updateVersionHistory(implementation, activatedBy);
|
57
|
+
_upgrade(data);
|
58
|
+
}
|
53
59
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
thisVersion,
|
58
|
-
implementation,
|
59
|
-
activatedBy,
|
60
|
-
blockTimestamp(),
|
61
|
-
blockNumber()
|
62
|
-
);
|
60
|
+
function isInitialized(Version _version) public override view returns(bool) {
|
61
|
+
return _getVersionableStorage()._versionHistory[_version].activatedIn.toInt() > 0;
|
62
|
+
}
|
63
63
|
|
64
|
-
|
64
|
+
function getVersion() public pure virtual returns(Version);
|
65
|
+
|
66
|
+
function getVersionCount() public view override returns(uint256) {
|
67
|
+
return _getVersionableStorage()._versions.length;
|
65
68
|
}
|
66
69
|
|
70
|
+
function getVersion(uint256 idx) public view override returns(Version) {
|
71
|
+
return _getVersionableStorage()._versions[idx];
|
72
|
+
}
|
67
73
|
|
68
|
-
function
|
69
|
-
return _versionHistory[_version]
|
74
|
+
function getVersionInfo(Version _version) public override view returns(VersionInfo memory) {
|
75
|
+
return _getVersionableStorage()._versionHistory[_version];
|
70
76
|
}
|
71
77
|
|
78
|
+
function getInitializedVersion() public view returns(uint64) {
|
79
|
+
return _getInitializedVersion();
|
80
|
+
}
|
72
81
|
|
73
|
-
function getVersion() public pure virtual returns(Version);
|
74
82
|
|
75
83
|
|
76
|
-
|
77
|
-
|
84
|
+
// IMPORTANT each version must implement this function
|
85
|
+
// each implementation MUST use onlyInitialising modifier
|
86
|
+
// each implementation MUST call intializers of all base contracts...
|
87
|
+
function _initialize(address owner, bytes memory data)
|
88
|
+
internal
|
89
|
+
onlyInitializing
|
90
|
+
virtual
|
91
|
+
{
|
92
|
+
revert();
|
78
93
|
}
|
79
94
|
|
80
95
|
|
81
|
-
|
82
|
-
|
96
|
+
// IMPORTANT each version except version "1" must implement this function
|
97
|
+
// each implementation MUST use onlyInitialising modifier
|
98
|
+
function _upgrade(bytes memory data)
|
99
|
+
internal
|
100
|
+
onlyInitializing
|
101
|
+
virtual
|
102
|
+
{
|
103
|
+
revert();
|
104
|
+
}
|
105
|
+
|
106
|
+
function _getVersionableStorage() private pure returns (VersionableStorage storage $) {
|
107
|
+
assembly {
|
108
|
+
$.slot := VERSIONABLE_LOCATION_V1
|
109
|
+
}
|
83
110
|
}
|
84
111
|
|
112
|
+
// can only be called once per contract
|
113
|
+
// needs to be called inside the proxy upgrade tx
|
114
|
+
// TODO run reinitializer(version().toUint64()) modifier after "version()" is checked,
|
115
|
+
function _updateVersionHistory(
|
116
|
+
address implementation,
|
117
|
+
address activatedBy
|
118
|
+
)
|
119
|
+
private
|
120
|
+
onlyInitializing
|
121
|
+
{
|
122
|
+
VersionableStorage storage $ = _getVersionableStorage();
|
123
|
+
|
124
|
+
uint64 version = _getInitializedVersion();
|
125
|
+
|
126
|
+
Version thisVersion = getVersion();
|
127
|
+
|
128
|
+
if(version == 1) {
|
129
|
+
// thisVersion is alias to version "1"
|
130
|
+
$._v1 = thisVersion;
|
131
|
+
}
|
132
|
+
else {
|
133
|
+
require(thisVersion > $._v1, "INVALID VERSION");
|
134
|
+
}
|
135
|
+
|
136
|
+
// update version history
|
137
|
+
$._versions.push(thisVersion);
|
138
|
+
$._versionHistory[thisVersion] = VersionInfo(
|
139
|
+
thisVersion,
|
140
|
+
implementation,
|
141
|
+
activatedBy,
|
142
|
+
TimestampLib.blockTimestamp(),
|
143
|
+
blockNumber()
|
144
|
+
);
|
85
145
|
|
86
|
-
|
87
|
-
return _versionHistory[_version];
|
146
|
+
emit LogVersionableInitialized(thisVersion, implementation, activatedBy);
|
88
147
|
}
|
89
148
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {UFixed,
|
4
|
+
import {UFixed, UFixedLib} from "../types/UFixed.sol";
|
5
5
|
import {Fee, FeeLib} from "../types/Fee.sol";
|
6
6
|
|
7
7
|
contract TestFee {
|
@@ -15,7 +15,7 @@ contract TestFee {
|
|
15
15
|
pure
|
16
16
|
returns(Fee memory fee)
|
17
17
|
{
|
18
|
-
return FeeLib.toFee(
|
18
|
+
return FeeLib.toFee(UFixedLib.toUFixed(fractionalValue, exponent), fixedValue);
|
19
19
|
}
|
20
20
|
|
21
21
|
function getZeroFee() external pure returns(Fee memory fee) {
|
@@ -8,12 +8,11 @@ import {Registerable} from "../../contracts/shared/Registerable.sol";
|
|
8
8
|
|
9
9
|
contract TestRegisterable is Registerable {
|
10
10
|
|
11
|
-
constructor(address registry, NftId registryNftId)
|
12
|
-
Registerable(registry, registryNftId)
|
11
|
+
constructor(address registry, NftId registryNftId, ObjectType objectType, bool isInterceptor, address initialOwner)
|
12
|
+
//Registerable(registry, registryNftId)
|
13
13
|
// solhint-disable-next-line no-empty-blocks
|
14
|
-
{
|
15
|
-
|
16
|
-
|
17
|
-
return TOKEN();
|
14
|
+
{
|
15
|
+
bytes memory data = "";
|
16
|
+
initializeRegisterable(registry, registryNftId, objectType, isInterceptor, initialOwner, data);
|
18
17
|
}
|
19
18
|
}
|
@@ -4,7 +4,7 @@ pragma solidity ^0.8.19;
|
|
4
4
|
import {RoleId, RoleIdLib, PRODUCT_OWNER_ROLE_NAME, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE_NAME, POOL_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
|
5
5
|
|
6
6
|
contract TestRoleId {
|
7
|
-
function getRole(
|
7
|
+
function getRole(uint256 roleNum) external pure returns (RoleId) { return RoleIdLib.toRoleId(roleNum); }
|
8
8
|
|
9
9
|
function getProductOwnerRoleName() external pure returns (string memory) { return PRODUCT_OWNER_ROLE_NAME(); }
|
10
10
|
function getProductOwnerRole() external pure returns (RoleId) { return PRODUCT_OWNER_ROLE(); }
|
@@ -1,32 +1,25 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
+
import {ObjectType, PRODUCT} from "../../contracts/types/ObjectType.sol";
|
4
5
|
import {NftId} from "../../contracts/types/NftId.sol";
|
5
6
|
import {Version, VersionLib} from "../../contracts/types/Version.sol";
|
6
|
-
import {
|
7
|
+
import {Service} from "../../contracts/shared/Service.sol";
|
7
8
|
|
8
9
|
import {IVersionable} from "../../contracts/shared/IVersionable.sol";
|
9
10
|
import {Versionable} from "../../contracts/shared/Versionable.sol";
|
10
11
|
|
11
|
-
contract TestService is
|
12
|
+
contract TestService is Service {
|
12
13
|
|
13
14
|
string public constant NAME = "TestService";
|
14
15
|
|
15
|
-
constructor(address registry, NftId registryNftId)
|
16
|
-
ServiceBase(registry, registryNftId)
|
16
|
+
constructor(address registry, NftId registryNftId, address initialOwner)
|
17
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
18
|
{
|
26
|
-
|
19
|
+
initializeService(registry, initialOwner);
|
27
20
|
}
|
28
21
|
|
29
|
-
function
|
30
|
-
return
|
22
|
+
function getDomain() public pure override returns(ObjectType) {
|
23
|
+
return PRODUCT();
|
31
24
|
}
|
32
25
|
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Key32, KeyId, Key32Lib} from "./Key32.sol";
|
5
|
+
import {NftId} from "./NftId.sol";
|
6
|
+
import {DISTRIBUTOR_TYPE} from "./ObjectType.sol";
|
7
|
+
|
8
|
+
type DistributorType is bytes8;
|
9
|
+
|
10
|
+
// type bindings
|
11
|
+
using {
|
12
|
+
eqDistributorType as ==,
|
13
|
+
neDistributorType as !=,
|
14
|
+
DistributorTypeLib.toKey32
|
15
|
+
} for DistributorType global;
|
16
|
+
|
17
|
+
// general pure free functions
|
18
|
+
|
19
|
+
// pure free functions for operators
|
20
|
+
function eqDistributorType(
|
21
|
+
DistributorType a,
|
22
|
+
DistributorType b
|
23
|
+
) pure returns (bool isSame) {
|
24
|
+
return DistributorType.unwrap(a) == DistributorType.unwrap(b);
|
25
|
+
}
|
26
|
+
|
27
|
+
function neDistributorType(
|
28
|
+
DistributorType a,
|
29
|
+
DistributorType b
|
30
|
+
) pure returns (bool isDifferent) {
|
31
|
+
return DistributorType.unwrap(a) != DistributorType.unwrap(b);
|
32
|
+
}
|
33
|
+
|
34
|
+
// library functions that operate on user defined type
|
35
|
+
library DistributorTypeLib {
|
36
|
+
|
37
|
+
function zero() public pure returns (DistributorType) {
|
38
|
+
return DistributorType.wrap(bytes8(0));
|
39
|
+
}
|
40
|
+
|
41
|
+
// @dev Converts a referral string into an id.
|
42
|
+
function toDistributorType(NftId distributionNftId, string memory name) public pure returns (DistributorType) {
|
43
|
+
return DistributorType.wrap(bytes8(keccak256(abi.encode(distributionNftId, name))));
|
44
|
+
}
|
45
|
+
|
46
|
+
/// @dev Returns the key32 value for the specified nft id and object type.
|
47
|
+
function toKey32(DistributorType id) public pure returns (Key32 key) {
|
48
|
+
return Key32Lib.toKey32(DISTRIBUTOR_TYPE(), toKeyId(id));
|
49
|
+
}
|
50
|
+
|
51
|
+
/// @dev Returns the key id value for the specified nft id
|
52
|
+
function toKeyId(DistributorType id) public pure returns (KeyId keyId) {
|
53
|
+
return KeyId.wrap(bytes31(DistributorType.unwrap(id)));
|
54
|
+
}
|
55
|
+
}
|
package/contracts/types/Fee.sol
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {UFixed,
|
4
|
+
import {UFixed, UFixedLib} from "./UFixed.sol";
|
5
5
|
|
6
6
|
struct Fee {
|
7
7
|
UFixed fractionalFee;
|
@@ -21,7 +21,7 @@ library FeeLib {
|
|
21
21
|
uint256 netAmount
|
22
22
|
)
|
23
23
|
{
|
24
|
-
UFixed fractionalAmount =
|
24
|
+
UFixed fractionalAmount = UFixedLib.toUFixed(amount) *
|
25
25
|
fee.fractionalFee;
|
26
26
|
feeAmount = fractionalAmount.toInt() + fee.fixedFee;
|
27
27
|
netAmount = amount - feeAmount;
|
@@ -37,7 +37,7 @@ library FeeLib {
|
|
37
37
|
|
38
38
|
/// @dev Return the percent fee struct (x%, 0)
|
39
39
|
function percentageFee(uint8 percent) public pure returns (Fee memory fee) {
|
40
|
-
return Fee(
|
40
|
+
return Fee(UFixedLib.toUFixed(percent, -2), 0);
|
41
41
|
}
|
42
42
|
|
43
43
|
/// @dev Return a zero fee struct (0, 0)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {ObjectType} from "./ObjectType.sol";
|
5
5
|
|
@@ -10,7 +10,8 @@ type KeyId is bytes31;
|
|
10
10
|
using {
|
11
11
|
eqKey32 as ==,
|
12
12
|
neKey32 as !=,
|
13
|
-
Key32Lib.
|
13
|
+
Key32Lib.toKeyId,
|
14
|
+
Key32Lib.toObjectType
|
14
15
|
} for Key32 global;
|
15
16
|
|
16
17
|
// @dev Returns true iff keys are identical
|
@@ -37,9 +38,13 @@ library Key32Lib {
|
|
37
38
|
return Key32.wrap(bytes32(uintKey));
|
38
39
|
}
|
39
40
|
|
40
|
-
function
|
41
|
+
function toObjectType(Key32 key) public pure returns (ObjectType objectType) {
|
41
42
|
bytes32 key32 = Key32.unwrap(key);
|
42
43
|
objectType = ObjectType.wrap(uint8(uint256(key32 & TYPE_MASK) >> TYPE_SHIFT));
|
44
|
+
}
|
45
|
+
|
46
|
+
function toKeyId(Key32 key) public pure returns (KeyId id) {
|
47
|
+
bytes32 key32 = Key32.unwrap(key);
|
43
48
|
id = KeyId.wrap(bytes31((key32 & ID_MASK) << ID_SHIFT));
|
44
49
|
}
|
45
50
|
}
|
@@ -11,35 +11,37 @@ library LibNftIdSet {
|
|
11
11
|
mapping(NftId nftid => uint256 index) at;
|
12
12
|
}
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
error ErrorNftIdSetAlreadyAdded(NftId nftId);
|
15
|
+
error ErrorNftIdSetNotInSet(NftId nftId);
|
16
|
+
|
17
|
+
|
18
|
+
function add(Set storage set, NftId nftId) external {
|
19
|
+
if (set.at[nftId] > 0) {
|
20
|
+
revert ErrorNftIdSetAlreadyAdded(nftId);
|
21
21
|
}
|
22
|
+
|
23
|
+
set.ids.push(nftId);
|
24
|
+
set.at[nftId] = set.ids.length;
|
22
25
|
}
|
23
26
|
|
24
|
-
function remove(Set storage set, NftId nftId) external
|
27
|
+
function remove(Set storage set, NftId nftId) external {
|
25
28
|
uint256 nftIdIndex = set.at[nftId];
|
26
29
|
|
27
|
-
if (nftIdIndex
|
28
|
-
|
29
|
-
uint256 lastIndex = set.ids.length - 1;
|
30
|
-
|
31
|
-
if (lastIndex != toDeleteIndex) {
|
32
|
-
NftId lastId = set.ids[lastIndex];
|
33
|
-
set.ids[toDeleteIndex] = lastId;
|
34
|
-
set.at[lastId] = nftIdIndex; // Replace lastValue's index to valueIndex
|
35
|
-
}
|
36
|
-
|
37
|
-
set.ids.pop();
|
38
|
-
delete set.at[nftId];
|
39
|
-
return true;
|
40
|
-
} else {
|
41
|
-
return false;
|
30
|
+
if (nftIdIndex == 0) {
|
31
|
+
revert ErrorNftIdSetNotInSet(nftId);
|
42
32
|
}
|
33
|
+
|
34
|
+
uint256 toDeleteIndex = nftIdIndex - 1;
|
35
|
+
uint256 lastIndex = set.ids.length - 1;
|
36
|
+
|
37
|
+
if (lastIndex != toDeleteIndex) {
|
38
|
+
NftId lastId = set.ids[lastIndex];
|
39
|
+
set.ids[toDeleteIndex] = lastId;
|
40
|
+
set.at[lastId] = nftIdIndex; // Replace lastValue's index to valueIndex
|
41
|
+
}
|
42
|
+
|
43
|
+
set.ids.pop();
|
44
|
+
delete set.at[nftId];
|
43
45
|
}
|
44
46
|
|
45
47
|
function isEmpty(Set storage set) external view returns(bool empty) {
|
@@ -50,7 +52,7 @@ library LibNftIdSet {
|
|
50
52
|
return set.at[nftId] > 0;
|
51
53
|
}
|
52
54
|
|
53
|
-
function
|
55
|
+
function size(Set storage set) external view returns(uint256 length) {
|
54
56
|
return set.ids.length;
|
55
57
|
}
|
56
58
|
|
@@ -0,0 +1,52 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
// uint32 allows for 4'294'967'296 individual items
|
5
|
+
type NumberId is uint32;
|
6
|
+
|
7
|
+
// type bindings
|
8
|
+
using {
|
9
|
+
eqNumberId as ==,
|
10
|
+
neNumberId as !=,
|
11
|
+
NumberIdLib.eqz,
|
12
|
+
NumberIdLib.gtz,
|
13
|
+
NumberIdLib.toInt
|
14
|
+
} for NumberId global;
|
15
|
+
|
16
|
+
|
17
|
+
// pure free functions for operators
|
18
|
+
function eqNumberId(NumberId a, NumberId b) pure returns (bool isSame) {
|
19
|
+
return NumberId.unwrap(a) == NumberId.unwrap(b);
|
20
|
+
}
|
21
|
+
|
22
|
+
function neNumberId(NumberId a, NumberId b) pure returns (bool isDifferent) {
|
23
|
+
return NumberId.unwrap(a) != NumberId.unwrap(b);
|
24
|
+
}
|
25
|
+
|
26
|
+
// library functions that operate on user defined type
|
27
|
+
library NumberIdLib {
|
28
|
+
/// @dev Converts the NumberId to a uint.
|
29
|
+
function zero() public pure returns (NumberId) {
|
30
|
+
return NumberId.wrap(0);
|
31
|
+
}
|
32
|
+
|
33
|
+
/// @dev Converts an uint into a NumberId.
|
34
|
+
function toNumberId(uint256 a) public pure returns (NumberId) {
|
35
|
+
return NumberId.wrap(uint32(a));
|
36
|
+
}
|
37
|
+
|
38
|
+
/// @dev Converts the NumberId to a uint.
|
39
|
+
function toInt(NumberId a) public pure returns (uint32) {
|
40
|
+
return uint32(NumberId.unwrap(a));
|
41
|
+
}
|
42
|
+
|
43
|
+
/// @dev Returns true if the value is non-zero (> 0).
|
44
|
+
function gtz(NumberId a) public pure returns (bool) {
|
45
|
+
return NumberId.unwrap(a) > 0;
|
46
|
+
}
|
47
|
+
|
48
|
+
/// @dev Returns true if the value is zero (== 0).
|
49
|
+
function eqz(NumberId a) public pure returns (bool) {
|
50
|
+
return NumberId.unwrap(a) == 0;
|
51
|
+
}
|
52
|
+
}
|