@etherisc/gif-next 0.0.2-fe34d97-357 → 0.0.2-fe88ad7-208
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 +231 -27
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +331 -23
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +675 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +246 -23
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +90 -171
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +55 -177
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +520 -133
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +540 -113
- 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/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +788 -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 +946 -1214
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +570 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1852 -1184
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1047 -0
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +963 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +460 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +285 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +280 -48
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +33 -1
- 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/{access/IAccess.sol/IAccess.json → IDistribution.sol/IDistribution.json} +2 -2
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +945 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +432 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +380 -89
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +693 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +420 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +669 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +185 -83
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/IService.sol/IService.json → service/IDistributionService.sol/IDistributionService.json} +206 -60
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +664 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +200 -77
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +184 -196
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +993 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +464 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +345 -89
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +420 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +300 -267
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +420 -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 +376 -37
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +976 -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 +397 -115
- 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 +1195 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +451 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +546 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +397 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +172 -95
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +442 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +224 -56
- 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 +204 -36
- 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 +289 -68
- 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 +52 -13
- 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/BaseComponent.sol +104 -39
- package/contracts/components/Distribution.sol +163 -0
- package/contracts/components/IBaseComponent.sol +18 -3
- package/contracts/components/IDistributionComponent.sol +44 -0
- package/contracts/components/IPoolComponent.sol +19 -10
- package/contracts/components/IProductComponent.sol +25 -9
- package/contracts/components/Pool.sol +126 -46
- package/contracts/components/Product.sol +172 -61
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
- package/contracts/instance/BundleManager.sol +129 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +55 -44
- package/contracts/instance/IInstanceBase.sol +26 -0
- package/contracts/instance/IInstanceService.sol +40 -0
- package/contracts/instance/Instance.sol +261 -56
- package/contracts/instance/InstanceAccessManager.sol +303 -0
- package/contracts/instance/InstanceBase.sol +41 -0
- package/contracts/instance/InstanceReader.sol +315 -0
- package/contracts/instance/InstanceService.sol +350 -0
- package/contracts/instance/InstanceServiceManager.sol +54 -0
- package/contracts/instance/ObjectManager.sol +101 -0
- package/contracts/instance/base/ComponentServiceBase.sol +57 -17
- package/contracts/instance/base/IInstanceBase.sol +6 -2
- 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 +48 -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 +46 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/BundleService.sol +260 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/ComponentOwnerService.sol +238 -78
- package/contracts/instance/service/DistributionService.sol +113 -0
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IBundleService.sol +45 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -3
- package/contracts/instance/service/IDistributionService.sol +12 -0
- package/contracts/instance/service/IPolicyService.sol +87 -0
- package/contracts/instance/service/IPoolService.sol +8 -18
- package/contracts/instance/service/IProductService.sol +12 -50
- package/contracts/instance/service/PolicyService.sol +503 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +87 -92
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +103 -339
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +79 -36
- package/contracts/registry/IRegistry.sol +58 -24
- package/contracts/registry/IRegistryService.sol +58 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +303 -288
- package/contracts/registry/RegistryAccessManager.sol +210 -0
- package/contracts/registry/RegistryService.sol +323 -0
- package/contracts/registry/RegistryServiceManager.sol +62 -0
- package/contracts/registry/ReleaseManager.sol +348 -0
- package/contracts/registry/TokenRegistry.sol +110 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/ERC165.sol +6 -2
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +8 -15
- package/contracts/shared/IService.sol +16 -0
- package/contracts/shared/IVersionable.sol +55 -11
- package/contracts/shared/NftOwnable.sol +134 -0
- package/contracts/shared/ProxyManager.sol +94 -0
- package/contracts/shared/Registerable.sol +63 -59
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +58 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +113 -55
- 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 +10 -5
- 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 +32 -7
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RoleId.sol +62 -10
- 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 +4 -3
- 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/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- 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/module/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -265
- 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 -265
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -136
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -136
- 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 -288
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -288
- 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 -132
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -150
- 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 -531
- 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 -531
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -455
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -479
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/contracts/experiment/statemachine/README.md +0 -112
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/IService.sol +0 -15
- package/contracts/instance/base/InstanceBase.sol +0 -84
- package/contracts/instance/base/ModuleBase.sol +0 -53
- 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 -135
- package/contracts/instance/module/bundle/IBundle.sol +0 -51
- package/contracts/instance/module/compensation/CompensationModule.sol +0 -17
- package/contracts/instance/module/compensation/ICompensation.sol +0 -10
- package/contracts/instance/module/component/ComponentModule.sol +0 -81
- package/contracts/instance/module/component/IComponent.sol +0 -29
- package/contracts/instance/module/policy/IPolicy.sol +0 -62
- package/contracts/instance/module/policy/PolicyModule.sol +0 -92
- 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 -27
- package/contracts/instance/module/risk/RiskModule.sol +0 -70
- package/contracts/instance/module/treasury/ITreasury.sol +0 -96
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -171
- package/contracts/registry/IChainNft.sol +0 -21
- package/contracts/registry/IRegistryLinked.sol +0 -8
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/test/TestPool.sol +0 -24
- package/contracts/test/TestProduct.sol +0 -66
@@ -1,89 +1,147 @@
|
|
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
|
-
// controlled activation for controller contract
|
17
|
-
constructor() {
|
18
|
-
_activate(address(0), msg.sender);
|
19
|
-
}
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
{
|
27
|
-
_activate(implementation, activatedBy);
|
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;
|
28
27
|
}
|
29
28
|
|
30
29
|
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
constructor() {
|
31
|
+
_disableInitializers();
|
32
|
+
}
|
33
|
+
// TODO write test where new version of private _updateVersionHistory is added and used...
|
34
|
+
function initialize(
|
34
35
|
address implementation,
|
35
|
-
address activatedBy
|
36
|
+
address activatedBy,
|
37
|
+
bytes memory data
|
36
38
|
)
|
37
|
-
|
39
|
+
public
|
40
|
+
initializer
|
38
41
|
{
|
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
|
-
}
|
42
|
+
_updateVersionHistory(implementation, activatedBy);
|
43
|
+
_initialize(activatedBy, data);
|
44
|
+
}
|
53
45
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
46
|
+
// TODO activatedBy MUST ALWAYS be an owner?
|
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
|
+
}
|
63
58
|
|
64
|
-
|
59
|
+
function isInitialized(Version _version) public override view returns(bool) {
|
60
|
+
return _getVersionableStorage()._versionHistory[_version].activatedIn.toInt() > 0;
|
65
61
|
}
|
66
62
|
|
63
|
+
function getVersion() public pure virtual returns(Version);
|
67
64
|
|
68
|
-
function
|
69
|
-
return
|
65
|
+
function getVersionCount() public view override returns(uint256) {
|
66
|
+
return _getVersionableStorage()._versions.length;
|
70
67
|
}
|
71
68
|
|
69
|
+
function getVersion(uint256 idx) public view override returns(Version) {
|
70
|
+
return _getVersionableStorage()._versions[idx];
|
71
|
+
}
|
72
72
|
|
73
|
-
function
|
73
|
+
function getVersionInfo(Version _version) public override view returns(VersionInfo memory) {
|
74
|
+
return _getVersionableStorage()._versionHistory[_version];
|
75
|
+
}
|
76
|
+
|
77
|
+
function getInitializedVersion() public view returns(uint64) {
|
78
|
+
return _getInitializedVersion();
|
79
|
+
}
|
74
80
|
|
75
81
|
|
76
|
-
|
77
|
-
|
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(address owner, bytes memory data)
|
87
|
+
internal
|
88
|
+
onlyInitializing
|
89
|
+
virtual
|
90
|
+
{
|
91
|
+
revert();
|
78
92
|
}
|
79
93
|
|
80
94
|
|
81
|
-
|
82
|
-
|
95
|
+
// IMPORTANT each version except version "1" must implement this function
|
96
|
+
// each implementation MUST use onlyInitialising modifier
|
97
|
+
function _upgrade(bytes memory data)
|
98
|
+
internal
|
99
|
+
onlyInitializing
|
100
|
+
virtual
|
101
|
+
{
|
102
|
+
revert();
|
103
|
+
}
|
104
|
+
|
105
|
+
function _getVersionableStorage() private pure returns (VersionableStorage storage $) {
|
106
|
+
assembly {
|
107
|
+
$.slot := VERSIONABLE_LOCATION_V1
|
108
|
+
}
|
83
109
|
}
|
84
110
|
|
111
|
+
// can only be called once per contract
|
112
|
+
// needs to be called inside the proxy upgrade tx
|
113
|
+
// TODO run reinitializer(version().toUint64()) modifier after "version()" is checked,
|
114
|
+
function _updateVersionHistory(
|
115
|
+
address implementation,
|
116
|
+
address activatedBy
|
117
|
+
)
|
118
|
+
private
|
119
|
+
onlyInitializing
|
120
|
+
{
|
121
|
+
VersionableStorage storage $ = _getVersionableStorage();
|
122
|
+
|
123
|
+
uint64 version = _getInitializedVersion();
|
124
|
+
|
125
|
+
Version thisVersion = getVersion();
|
126
|
+
|
127
|
+
if(version == 1) {
|
128
|
+
// thisVersion is alias to version "1"
|
129
|
+
$._v1 = thisVersion;
|
130
|
+
}
|
131
|
+
else {
|
132
|
+
require(thisVersion > $._v1, "INVALID VERSION");
|
133
|
+
}
|
134
|
+
|
135
|
+
// update version history
|
136
|
+
$._versions.push(thisVersion);
|
137
|
+
$._versionHistory[thisVersion] = VersionInfo(
|
138
|
+
thisVersion,
|
139
|
+
implementation,
|
140
|
+
activatedBy,
|
141
|
+
TimestampLib.blockTimestamp(),
|
142
|
+
blockNumber()
|
143
|
+
);
|
85
144
|
|
86
|
-
|
87
|
-
return _versionHistory[_version];
|
145
|
+
emit LogVersionableInitialized(thisVersion, implementation, activatedBy);
|
88
146
|
}
|
89
147
|
}
|
@@ -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 {DISTRIBUTION_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(DISTRIBUTION_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;
|
@@ -11,8 +11,8 @@ struct Fee {
|
|
11
11
|
library FeeLib {
|
12
12
|
|
13
13
|
function calculateFee(
|
14
|
-
|
15
|
-
|
14
|
+
Fee memory fee,
|
15
|
+
uint256 amount
|
16
16
|
)
|
17
17
|
public
|
18
18
|
pure
|
@@ -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;
|
@@ -35,7 +35,12 @@ library FeeLib {
|
|
35
35
|
return Fee(fractionalFee, fixedFee);
|
36
36
|
}
|
37
37
|
|
38
|
-
/// @dev Return the
|
38
|
+
/// @dev Return the percent fee struct (x%, 0)
|
39
|
+
function percentageFee(uint8 percent) public pure returns (Fee memory fee) {
|
40
|
+
return Fee(UFixedLib.toUFixed(percent, -2), 0);
|
41
|
+
}
|
42
|
+
|
43
|
+
/// @dev Return a zero fee struct (0, 0)
|
39
44
|
function zeroFee() public pure returns (Fee memory fee) {
|
40
45
|
return Fee(UFixed.wrap(0), 0);
|
41
46
|
}
|
@@ -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
|
+
}
|
@@ -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
|
type ObjectType is uint8;
|
5
5
|
|
@@ -17,42 +17,67 @@ function PROTOCOL() pure returns (ObjectType) {
|
|
17
17
|
return toObjectType(10);
|
18
18
|
}
|
19
19
|
|
20
|
-
function
|
20
|
+
function ROLE() pure returns (ObjectType) {
|
21
21
|
return toObjectType(20);
|
22
22
|
}
|
23
23
|
|
24
|
-
function
|
24
|
+
function TARGET() pure returns (ObjectType) {
|
25
25
|
return toObjectType(30);
|
26
26
|
}
|
27
27
|
|
28
|
-
function
|
28
|
+
function REGISTRY() pure returns (ObjectType) {
|
29
29
|
return toObjectType(40);
|
30
30
|
}
|
31
31
|
|
32
|
-
function
|
32
|
+
function TOKEN() pure returns (ObjectType) {
|
33
33
|
return toObjectType(50);
|
34
34
|
}
|
35
35
|
|
36
|
-
function
|
36
|
+
function SERVICE() pure returns (ObjectType) {
|
37
37
|
return toObjectType(60);
|
38
38
|
}
|
39
39
|
|
40
|
+
function INSTANCE() pure returns (ObjectType) {
|
41
|
+
return toObjectType(70);
|
42
|
+
}
|
43
|
+
|
44
|
+
function STAKE() pure returns (ObjectType) {
|
45
|
+
return toObjectType(80);
|
46
|
+
}
|
47
|
+
|
40
48
|
function COMPONENT() pure returns (ObjectType) {
|
41
49
|
return toObjectType(100);
|
42
50
|
}
|
43
51
|
|
52
|
+
// TODO replace by PRODUCT_SETUP
|
44
53
|
function TREASURY() pure returns (ObjectType) {
|
45
54
|
return toObjectType(101);
|
46
55
|
}
|
47
56
|
|
57
|
+
function PRODUCT_SETUP() pure returns (ObjectType) {
|
58
|
+
return toObjectType(101);
|
59
|
+
}
|
60
|
+
|
48
61
|
function PRODUCT() pure returns (ObjectType) {
|
49
62
|
return toObjectType(110);
|
50
63
|
}
|
51
64
|
|
52
|
-
function
|
65
|
+
function DISTRIBUTION() pure returns (ObjectType) {
|
53
66
|
return toObjectType(120);
|
54
67
|
}
|
55
68
|
|
69
|
+
function DISTRIBUTION_TYPE() pure returns (ObjectType) {
|
70
|
+
return toObjectType(121);
|
71
|
+
}
|
72
|
+
|
73
|
+
function DISTRIBUTOR() pure returns (ObjectType) {
|
74
|
+
return toObjectType(122);
|
75
|
+
}
|
76
|
+
|
77
|
+
function REFERRAL() pure returns (ObjectType) {
|
78
|
+
return toObjectType(123);
|
79
|
+
}
|
80
|
+
|
56
81
|
function ORACLE() pure returns (ObjectType) {
|
57
82
|
return toObjectType(130);
|
58
83
|
}
|