@etherisc/gif-next 0.0.2-7b53731-256 → 0.0.2-7b86057-523
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 +211 -27
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +656 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +530 -86
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/IComponent.sol/IComponent.json} +244 -241
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +357 -49
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +400 -118
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +452 -74
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +564 -172
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +622 -117
- 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 +995 -1022
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +586 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1835 -1161
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1034 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1381 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1039 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +473 -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 +603 -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/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1102 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +449 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +415 -63
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +437 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +715 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +178 -62
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +766 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +178 -124
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +175 -274
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1227 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +505 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +395 -132
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +437 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +348 -350
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +437 -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 +455 -36
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +981 -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 +465 -111
- 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 +1200 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +464 -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 +394 -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/{instance/module/component/IComponent.sol/IComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +112 -37
- 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} +169 -117
- 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 +171 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +362 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +193 -32
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +202 -102
- 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/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
- 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 +207 -31
- 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 +292 -63
- 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 +216 -0
- package/contracts/components/Distribution.sol +57 -38
- package/contracts/components/IComponent.sol +43 -0
- package/contracts/components/IDistributionComponent.sol +6 -6
- package/contracts/components/IPoolComponent.sol +12 -23
- package/contracts/components/IProductComponent.sol +10 -9
- package/contracts/components/Pool.sol +112 -120
- package/contracts/components/Product.sol +99 -61
- 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 +64 -45
- package/contracts/instance/IInstanceService.sol +41 -0
- package/contracts/instance/Instance.sol +254 -59
- package/contracts/instance/InstanceAccessManager.sol +298 -0
- package/contracts/instance/InstanceReader.sol +293 -0
- package/contracts/instance/InstanceService.sol +435 -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 +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 +293 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/DistributionService.sol +70 -23
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IBundleService.sol +44 -0
- package/contracts/instance/service/IDistributionService.sol +1 -1
- package/contracts/instance/service/IPolicyService.sol +94 -0
- package/contracts/instance/service/IPoolService.sol +7 -24
- package/contracts/instance/service/IProductService.sol +9 -76
- package/contracts/instance/service/PolicyService.sol +538 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +76 -115
- 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 +65 -24
- package/contracts/registry/IRegistryService.sol +65 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +358 -287
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +262 -0
- package/contracts/registry/RegistryServiceManager.sol +62 -0
- package/contracts/registry/ReleaseManager.sol +332 -0
- package/contracts/registry/TokenRegistry.sol +112 -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 -17
- package/contracts/shared/IService.sol +16 -0
- package/contracts/shared/IVersionable.sol +55 -11
- package/contracts/shared/NftOwnable.sol +139 -0
- package/contracts/shared/ProxyManager.sol +94 -0
- package/contracts/shared/Registerable.sol +59 -59
- 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 -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 +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 +35 -14
- 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 +4 -3
- 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/components/IBaseComponent.sol/IBaseComponent.json +0 -174
- 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/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/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +0 -495
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
- package/artifacts/contracts/shared/Proxy.sol/Proxy.dbg.json +0 -4
- package/artifacts/contracts/shared/Proxy.sol/Proxy.json +0 -178
- package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
- package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
- package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -187
- 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/registry/RegistryUpgradeable.sol +0 -416
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/shared/Proxy.sol +0 -83
- package/contracts/shared/VersionableUpgradeable.sol +0 -108
- 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
@@ -41,6 +41,25 @@
|
|
41
41
|
"stateMutability": "pure",
|
42
42
|
"type": "function"
|
43
43
|
},
|
44
|
+
{
|
45
|
+
"inputs": [
|
46
|
+
{
|
47
|
+
"internalType": "Version",
|
48
|
+
"name": "version",
|
49
|
+
"type": "uint24"
|
50
|
+
}
|
51
|
+
],
|
52
|
+
"name": "toUint64",
|
53
|
+
"outputs": [
|
54
|
+
{
|
55
|
+
"internalType": "uint64",
|
56
|
+
"name": "",
|
57
|
+
"type": "uint64"
|
58
|
+
}
|
59
|
+
],
|
60
|
+
"stateMutability": "pure",
|
61
|
+
"type": "function"
|
62
|
+
},
|
44
63
|
{
|
45
64
|
"inputs": [
|
46
65
|
{
|
@@ -70,6 +89,25 @@
|
|
70
89
|
"stateMutability": "pure",
|
71
90
|
"type": "function"
|
72
91
|
},
|
92
|
+
{
|
93
|
+
"inputs": [
|
94
|
+
{
|
95
|
+
"internalType": "uint64",
|
96
|
+
"name": "versionNumber",
|
97
|
+
"type": "uint64"
|
98
|
+
}
|
99
|
+
],
|
100
|
+
"name": "toVersion",
|
101
|
+
"outputs": [
|
102
|
+
{
|
103
|
+
"internalType": "Version",
|
104
|
+
"name": "",
|
105
|
+
"type": "uint24"
|
106
|
+
}
|
107
|
+
],
|
108
|
+
"stateMutability": "pure",
|
109
|
+
"type": "function"
|
110
|
+
},
|
73
111
|
{
|
74
112
|
"inputs": [
|
75
113
|
{
|
@@ -132,8 +170,8 @@
|
|
132
170
|
"type": "function"
|
133
171
|
}
|
134
172
|
],
|
135
|
-
"bytecode": "
|
136
|
-
"deployedBytecode": "
|
173
|
+
"bytecode": "0x61039161003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c80638e4ad86c116100655780638e4ad86c1461012157806394aa449c14610144578063a123b37c14610152578063c9e66e291461017957600080fd5b806304b8f6c5146100975780632efe0113146100b357806349a7111a146100c657806355601007146100fd575b600080fd5b60005b60405162ffffff90911681526020015b60405180910390f35b61009a6100c136600461026e565b610190565b6100d96100d436600461029a565b610231565b6040805160ff948516815292841660208401529216918101919091526060016100aa565b61011361010b36600461029a565b62ffffff1690565b6040519081526020016100aa565b61013261012f3660046102c6565b90565b60405160ff90911681526020016100aa565b61009a61012f3660046102df565b61016061010b36600461029a565b60405167ffffffffffffffff90911681526020016100aa565b61013261018736600461029a565b60101c60ff1690565b6000610100841080156101a4575061010083105b80156101b1575061010082105b61020c5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a5652532d3031303a56455253494f4e5f504152545f544f4f5f42604482015261494760f01b606482015260840160405180910390fd5b8161021f600885901b601087901b61031f565b610229919061031f565b949350505050565b600080808360ff601082901c166102488383610338565b915061ffff600883901c16600061025f8185610338565b92989197509195509350505050565b60008060006060848603121561028357600080fd5b505081359360208301359350604090920135919050565b6000602082840312156102ac57600080fd5b813562ffffff811681146102bf57600080fd5b9392505050565b6000602082840312156102d857600080fd5b5035919050565b6000602082840312156102f157600080fd5b813567ffffffffffffffff811681146102bf57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561033257610332610309565b92915050565b62ffffff82811682821603908082111561035457610354610309565b509291505056fea264697066735822122096e4b37266f82e0aaf6f30afa90c545c35f82576ca3b67d630233921e58f525b64736f6c63430008140033",
|
174
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c80638e4ad86c116100655780638e4ad86c1461012157806394aa449c14610144578063a123b37c14610152578063c9e66e291461017957600080fd5b806304b8f6c5146100975780632efe0113146100b357806349a7111a146100c657806355601007146100fd575b600080fd5b60005b60405162ffffff90911681526020015b60405180910390f35b61009a6100c136600461026e565b610190565b6100d96100d436600461029a565b610231565b6040805160ff948516815292841660208401529216918101919091526060016100aa565b61011361010b36600461029a565b62ffffff1690565b6040519081526020016100aa565b61013261012f3660046102c6565b90565b60405160ff90911681526020016100aa565b61009a61012f3660046102df565b61016061010b36600461029a565b60405167ffffffffffffffff90911681526020016100aa565b61013261018736600461029a565b60101c60ff1690565b6000610100841080156101a4575061010083105b80156101b1575061010082105b61020c5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a5652532d3031303a56455253494f4e5f504152545f544f4f5f42604482015261494760f01b606482015260840160405180910390fd5b8161021f600885901b601087901b61031f565b610229919061031f565b949350505050565b600080808360ff601082901c166102488383610338565b915061ffff600883901c16600061025f8185610338565b92989197509195509350505050565b60008060006060848603121561028357600080fd5b505081359360208301359350604090920135919050565b6000602082840312156102ac57600080fd5b813562ffffff811681146102bf57600080fd5b9392505050565b6000602082840312156102d857600080fd5b5035919050565b6000602082840312156102f157600080fd5b813567ffffffffffffffff811681146102bf57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561033257610332610309565b92915050565b62ffffff82811682821603908082111561035457610354610309565b509291505056fea264697066735822122096e4b37266f82e0aaf6f30afa90c545c35f82576ca3b67d630233921e58f525b64736f6c63430008140033",
|
137
175
|
"linkReferences": {},
|
138
176
|
"deployedLinkReferences": {}
|
139
177
|
}
|
@@ -7,7 +7,7 @@
|
|
7
7
|
"inputs": [
|
8
8
|
{
|
9
9
|
"internalType": "VersionPart",
|
10
|
-
"name": "
|
10
|
+
"name": "a",
|
11
11
|
"type": "uint8"
|
12
12
|
}
|
13
13
|
],
|
@@ -21,10 +21,29 @@
|
|
21
21
|
],
|
22
22
|
"stateMutability": "pure",
|
23
23
|
"type": "function"
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"inputs": [
|
27
|
+
{
|
28
|
+
"internalType": "uint256",
|
29
|
+
"name": "a",
|
30
|
+
"type": "uint256"
|
31
|
+
}
|
32
|
+
],
|
33
|
+
"name": "toVersionPart",
|
34
|
+
"outputs": [
|
35
|
+
{
|
36
|
+
"internalType": "VersionPart",
|
37
|
+
"name": "",
|
38
|
+
"type": "uint8"
|
39
|
+
}
|
40
|
+
],
|
41
|
+
"stateMutability": "pure",
|
42
|
+
"type": "function"
|
24
43
|
}
|
25
44
|
],
|
26
|
-
"bytecode": "
|
27
|
-
"deployedBytecode": "
|
45
|
+
"bytecode": "0x60fb610039600b82828239805160001a60731461002c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80638e4ad86c146042578063ac43d834146067575b600080fd5b6050604d3660046085565b90565b60405160ff90911681526020015b60405180910390f35b60786072366004609d565b60ff1690565b604051908152602001605e565b600060208284031215609657600080fd5b5035919050565b60006020828403121560ae57600080fd5b813560ff8116811460be57600080fd5b939250505056fea264697066735822122074bb6f75f2cab9692d05e41844bf40283045a9440c662c37a97b2502d38207ed64736f6c63430008140033",
|
46
|
+
"deployedBytecode": "0x7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80638e4ad86c146042578063ac43d834146067575b600080fd5b6050604d3660046085565b90565b60405160ff90911681526020015b60405180910390f35b60786072366004609d565b60ff1690565b604051908152602001605e565b600060208284031215609657600080fd5b5035919050565b60006020828403121560ae57600080fd5b813560ff8116811460be57600080fd5b939250505056fea264697066735822122074bb6f75f2cab9692d05e41844bf40283045a9440c662c37a97b2502d38207ed64736f6c63430008140033",
|
28
47
|
"linkReferences": {},
|
29
48
|
"deployedLinkReferences": {}
|
30
49
|
}
|
@@ -0,0 +1,216 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
5
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
6
|
+
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
7
|
+
|
8
|
+
import {IComponent} from "./IComponent.sol";
|
9
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
10
|
+
import {IInstanceService} from "../instance/IInstanceService.sol";
|
11
|
+
import {IInstance} from "../instance/IInstance.sol";
|
12
|
+
import {InstanceAccessManager} from "../instance/InstanceAccessManager.sol";
|
13
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
14
|
+
import {NftId} from "../types/NftId.sol";
|
15
|
+
import {ObjectType, INSTANCE, PRODUCT} from "../types/ObjectType.sol";
|
16
|
+
import {VersionPart} from "../types/Version.sol";
|
17
|
+
import {Registerable} from "../shared/Registerable.sol";
|
18
|
+
import {RoleId, RoleIdLib} from "../types/RoleId.sol";
|
19
|
+
import {IAccess} from "../instance/module/IAccess.sol";
|
20
|
+
|
21
|
+
// TODO discuss to inherit from oz accessmanaged
|
22
|
+
// TODO make contract upgradeable
|
23
|
+
// then add (Distribution|Pool|Product)Upradeable that also intherit from Versionable
|
24
|
+
// same pattern as for Service which is also upgradeable
|
25
|
+
abstract contract Component is
|
26
|
+
Registerable,
|
27
|
+
IComponent,
|
28
|
+
AccessManagedUpgradeable
|
29
|
+
{
|
30
|
+
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Component.sol")) - 1)) & ~bytes32(uint256(0xff));
|
31
|
+
bytes32 public constant CONTRACT_LOCATION_V1 = 0xffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00;
|
32
|
+
|
33
|
+
struct ComponentStorage {
|
34
|
+
IInstance _instance; // instance for this component
|
35
|
+
string _name; // unique (per instance) component name
|
36
|
+
IERC20Metadata _token; // token for this component
|
37
|
+
address _wallet; // wallet for this component (default = component contract itself)
|
38
|
+
IInstanceService _instanceService; // instance service for this component
|
39
|
+
|
40
|
+
NftId _productNftId; // only relevant for components that are linked to a aproduct
|
41
|
+
IProductService _productService; // product service for component, might not be relevant for some component types (eg oracles)
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
modifier onlyProductService() {
|
46
|
+
if(msg.sender != address(_getComponentStorage()._productService)) {
|
47
|
+
revert ErrorComponentNotProductService(msg.sender);
|
48
|
+
}
|
49
|
+
_;
|
50
|
+
}
|
51
|
+
|
52
|
+
constructor(
|
53
|
+
address registry,
|
54
|
+
NftId instanceNftId,
|
55
|
+
string memory name,
|
56
|
+
address token,
|
57
|
+
ObjectType componentType,
|
58
|
+
bool isInterceptor,
|
59
|
+
address initialOwner,
|
60
|
+
bytes memory data
|
61
|
+
) {
|
62
|
+
_initializeComponent(registry, instanceNftId, name, token, componentType, isInterceptor, initialOwner, data);
|
63
|
+
}
|
64
|
+
|
65
|
+
function _getComponentStorage() private pure returns (ComponentStorage storage $) {
|
66
|
+
assembly {
|
67
|
+
$.slot := CONTRACT_LOCATION_V1
|
68
|
+
}
|
69
|
+
}
|
70
|
+
|
71
|
+
function _initializeComponent(
|
72
|
+
address registry,
|
73
|
+
NftId instanceNftId,
|
74
|
+
string memory name,
|
75
|
+
address token,
|
76
|
+
ObjectType componentType,
|
77
|
+
bool isInterceptor,
|
78
|
+
address initialOwner,
|
79
|
+
bytes memory data
|
80
|
+
)
|
81
|
+
internal
|
82
|
+
initializer
|
83
|
+
virtual
|
84
|
+
{
|
85
|
+
ComponentStorage storage $ = _getComponentStorage();
|
86
|
+
_initializeRegisterable(registry, instanceNftId, componentType, isInterceptor, initialOwner, data);
|
87
|
+
|
88
|
+
// set unique name of component
|
89
|
+
$._name = name;
|
90
|
+
|
91
|
+
// set and check linked instance
|
92
|
+
IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
|
93
|
+
$._instance = IInstance(instanceInfo.objectAddress);
|
94
|
+
if(!$._instance.supportsInterface(type(IInstance).interfaceId)) {
|
95
|
+
revert ErrorComponentNotInstance(instanceNftId, instanceInfo.objectAddress);
|
96
|
+
}
|
97
|
+
|
98
|
+
// initialize AccessManagedUpgradeable
|
99
|
+
__AccessManaged_init($._instance.authority());
|
100
|
+
|
101
|
+
// set linked services
|
102
|
+
VersionPart gifVersion = $._instance.getMajorVersion();
|
103
|
+
$._instanceService = IInstanceService(getRegistry().getServiceAddress(INSTANCE(), gifVersion));
|
104
|
+
$._productService = IProductService(getRegistry().getServiceAddress(PRODUCT(), gifVersion));
|
105
|
+
|
106
|
+
// set wallet and token
|
107
|
+
$._wallet = address(this);
|
108
|
+
$._token = IERC20Metadata(token);
|
109
|
+
|
110
|
+
_registerInterface(type(IComponent).interfaceId);
|
111
|
+
}
|
112
|
+
|
113
|
+
function lock() external onlyOwner override {
|
114
|
+
_getComponentStorage()._instanceService.setTargetLocked(getName(), true);
|
115
|
+
}
|
116
|
+
|
117
|
+
function unlock() external onlyOwner override {
|
118
|
+
_getComponentStorage()._instanceService.setTargetLocked(getName(), false);
|
119
|
+
}
|
120
|
+
|
121
|
+
// only product service may set product nft id during registration of product setup
|
122
|
+
function setProductNftId(NftId productNftId)
|
123
|
+
external
|
124
|
+
override
|
125
|
+
onlyProductService()
|
126
|
+
{
|
127
|
+
ComponentStorage storage $ = _getComponentStorage();
|
128
|
+
|
129
|
+
if($._productNftId.gtz()) {
|
130
|
+
revert ErrorComponentProductNftAlreadySet();
|
131
|
+
}
|
132
|
+
|
133
|
+
$._productNftId = productNftId;
|
134
|
+
}
|
135
|
+
|
136
|
+
/// @dev Sets the wallet address for the component.
|
137
|
+
/// if the current wallet has tokens, these will be transferred.
|
138
|
+
/// if the new wallet address is externally owned, an approval from the
|
139
|
+
/// owner of the external wallet for the component to move all tokens must exist.
|
140
|
+
function setWallet(address newWallet) external override onlyOwner {
|
141
|
+
ComponentStorage storage $ = _getComponentStorage();
|
142
|
+
|
143
|
+
address currentWallet = $._wallet;
|
144
|
+
uint256 currentBalance = $._token.balanceOf(currentWallet);
|
145
|
+
|
146
|
+
// checks
|
147
|
+
if (newWallet == address(0)) {
|
148
|
+
revert ErrorComponentWalletAddressZero();
|
149
|
+
}
|
150
|
+
if (newWallet == currentWallet) {
|
151
|
+
revert ErrorComponentWalletAddressIsSameAsCurrent(newWallet);
|
152
|
+
}
|
153
|
+
|
154
|
+
if (currentBalance > 0) {
|
155
|
+
if (currentWallet == address(this)) {
|
156
|
+
// move tokens from component smart contract to external wallet
|
157
|
+
} else {
|
158
|
+
// move tokens from external wallet to component smart contract or another external wallet
|
159
|
+
uint256 allowance = $._token.allowance(currentWallet, address(this));
|
160
|
+
if (allowance < currentBalance) {
|
161
|
+
revert ErrorComponentWalletAllowanceTooSmall(currentWallet, newWallet, allowance, currentBalance);
|
162
|
+
}
|
163
|
+
}
|
164
|
+
}
|
165
|
+
|
166
|
+
// effects
|
167
|
+
$._wallet = newWallet;
|
168
|
+
emit LogComponentWalletAddressChanged(newWallet);
|
169
|
+
|
170
|
+
// interactions
|
171
|
+
if (currentBalance > 0) {
|
172
|
+
// transfer tokens from current wallet to new wallet
|
173
|
+
if (currentWallet == address(this)) {
|
174
|
+
// transferFrom requires self allowance too
|
175
|
+
$._token.approve(address(this), currentBalance);
|
176
|
+
}
|
177
|
+
|
178
|
+
SafeERC20.safeTransferFrom($._token, currentWallet, newWallet, currentBalance);
|
179
|
+
emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
|
180
|
+
}
|
181
|
+
}
|
182
|
+
|
183
|
+
function getWallet()
|
184
|
+
public
|
185
|
+
view
|
186
|
+
override
|
187
|
+
returns (address walletAddress)
|
188
|
+
{
|
189
|
+
return _getComponentStorage()._wallet;
|
190
|
+
}
|
191
|
+
|
192
|
+
function getToken() public view override returns (IERC20Metadata token) {
|
193
|
+
return _getComponentStorage()._token;
|
194
|
+
}
|
195
|
+
|
196
|
+
function getInstance() public view override returns (IInstance instance) {
|
197
|
+
return _getComponentStorage()._instance;
|
198
|
+
}
|
199
|
+
|
200
|
+
function getName() public view override returns(string memory name) {
|
201
|
+
return _getComponentStorage()._name;
|
202
|
+
}
|
203
|
+
|
204
|
+
function getProductNftId() public view override returns (NftId productNftId) {
|
205
|
+
return _getComponentStorage()._productNftId;
|
206
|
+
}
|
207
|
+
|
208
|
+
function getInstanceService() public view returns (IInstanceService) {
|
209
|
+
return _getComponentStorage()._instanceService;
|
210
|
+
}
|
211
|
+
|
212
|
+
function getProductService() public view returns (IProductService) {
|
213
|
+
return _getComponentStorage()._productService;
|
214
|
+
}
|
215
|
+
|
216
|
+
}
|
@@ -1,56 +1,69 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {DISTRIBUTION} from "../types/ObjectType.sol";
|
5
5
|
import {IDistributionService} from "../instance/service/IDistributionService.sol";
|
6
6
|
import {IProductService} from "../instance/service/IProductService.sol";
|
7
|
-
import {NftId} from "../types/NftId.sol";
|
8
|
-
import {ReferralId} from "../types/
|
7
|
+
import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
|
8
|
+
import {ReferralId} from "../types/Referral.sol";
|
9
9
|
import {Fee, FeeLib} from "../types/Fee.sol";
|
10
|
-
import {
|
10
|
+
import {Component} from "./Component.sol";
|
11
11
|
import {IDistributionComponent} from "./IDistributionComponent.sol";
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
13
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
14
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
15
|
+
import {Registerable} from "../shared/Registerable.sol";
|
16
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
17
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
18
|
+
|
19
|
+
abstract contract Distribution is
|
20
|
+
Component,
|
15
21
|
IDistributionComponent
|
16
22
|
{
|
23
|
+
using NftIdLib for NftId;
|
17
24
|
|
18
|
-
Fee internal _initialDistributionFee;
|
19
25
|
bool internal _isVerifying;
|
26
|
+
Fee internal _initialDistributionFee;
|
20
27
|
|
21
|
-
|
22
|
-
IProductService private _productService;
|
28
|
+
TokenHandler internal _tokenHandler;
|
23
29
|
|
24
|
-
|
25
|
-
require(
|
26
|
-
msg.sender == address(_productService),
|
27
|
-
"ERROR:POL-002:NOT_PRODUCT_SERVICE");
|
28
|
-
_;
|
29
|
-
}
|
30
|
+
IDistributionService private _distributionService;
|
30
31
|
|
31
32
|
constructor(
|
32
33
|
address registry,
|
33
34
|
NftId instanceNftId,
|
34
35
|
// TODO refactor into tokenNftId
|
36
|
+
string memory name,
|
35
37
|
address token,
|
36
38
|
bool verifying,
|
37
|
-
Fee memory distributionFee
|
38
|
-
|
39
|
-
|
40
|
-
|
39
|
+
Fee memory distributionFee,
|
40
|
+
address initialOwner,
|
41
|
+
bytes memory data
|
42
|
+
) Component (
|
43
|
+
registry,
|
44
|
+
instanceNftId,
|
45
|
+
name, token,
|
46
|
+
DISTRIBUTION(),
|
47
|
+
true,
|
48
|
+
initialOwner,
|
49
|
+
data
|
50
|
+
) {
|
41
51
|
_isVerifying = verifying;
|
42
52
|
_initialDistributionFee = distributionFee;
|
43
53
|
|
44
|
-
|
45
|
-
|
46
|
-
}
|
54
|
+
_tokenHandler = new TokenHandler(token);
|
55
|
+
_distributionService = getInstance().getDistributionService();
|
47
56
|
|
57
|
+
_registerInterface(type(IDistributionComponent).interfaceId);
|
58
|
+
}
|
48
59
|
|
49
60
|
function setFees(
|
50
61
|
Fee memory distributionFee
|
51
62
|
)
|
52
63
|
external
|
53
64
|
override
|
65
|
+
// FIXME: all the components exposed functions must be restrited AND onlyOwner
|
66
|
+
restricted()
|
54
67
|
{
|
55
68
|
_distributionService.setFees(distributionFee);
|
56
69
|
}
|
@@ -64,7 +77,8 @@ contract Distribution is
|
|
64
77
|
virtual override
|
65
78
|
returns (uint256 feeAmount)
|
66
79
|
{
|
67
|
-
|
80
|
+
ISetup.DistributionSetupInfo memory setupInfo = getSetupInfo();
|
81
|
+
Fee memory fee = setupInfo.distributionFee;
|
68
82
|
(feeAmount,) = FeeLib.calculateFee(fee, netPremiumAmount);
|
69
83
|
}
|
70
84
|
|
@@ -87,7 +101,7 @@ contract Distribution is
|
|
87
101
|
uint256 feeAmount
|
88
102
|
)
|
89
103
|
external
|
90
|
-
|
104
|
+
restricted()
|
91
105
|
virtual override
|
92
106
|
{
|
93
107
|
// default is no action
|
@@ -98,7 +112,7 @@ contract Distribution is
|
|
98
112
|
uint256 feeAmount
|
99
113
|
)
|
100
114
|
external
|
101
|
-
|
115
|
+
restricted()
|
102
116
|
virtual override
|
103
117
|
{
|
104
118
|
// default is no action
|
@@ -109,24 +123,29 @@ contract Distribution is
|
|
109
123
|
return false;
|
110
124
|
}
|
111
125
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
126
|
+
function getSetupInfo() public view returns (ISetup.DistributionSetupInfo memory setupInfo) {
|
127
|
+
InstanceReader reader = getInstance().getInstanceReader();
|
128
|
+
setupInfo = reader.getDistributionSetupInfo(getNftId());
|
129
|
+
|
130
|
+
// fallback to initial setup info (wallet is always != address(0))
|
131
|
+
if(setupInfo.wallet == address(0)) {
|
132
|
+
setupInfo = _getInitialSetupInfo();
|
119
133
|
}
|
120
134
|
}
|
121
135
|
|
136
|
+
function _getInitialSetupInfo() internal view returns (ISetup.DistributionSetupInfo memory setupInfo) {
|
137
|
+
return ISetup.DistributionSetupInfo(
|
138
|
+
zeroNftId(),
|
139
|
+
_tokenHandler,
|
140
|
+
_initialDistributionFee,
|
141
|
+
_isVerifying,
|
142
|
+
address(this)
|
143
|
+
);
|
144
|
+
}
|
145
|
+
|
122
146
|
|
123
147
|
/// @dev returns true iff the component needs to be called when selling/renewing policis
|
124
148
|
function isVerifying() external view returns (bool verifying) {
|
125
149
|
return _isVerifying;
|
126
150
|
}
|
127
|
-
|
128
|
-
// from registerable
|
129
|
-
function getType() public pure override returns (ObjectType) {
|
130
|
-
return DISTRIBUTION();
|
131
|
-
}
|
132
151
|
}
|
@@ -0,0 +1,43 @@
|
|
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
|
+
|
6
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
7
|
+
import {IInstance} from "../instance/IInstance.sol";
|
8
|
+
import {IInstanceService} from "../instance/IInstanceService.sol";
|
9
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
10
|
+
import {NftId} from "../types/NftId.sol";
|
11
|
+
|
12
|
+
interface IComponent is IRegisterable {
|
13
|
+
|
14
|
+
error ErrorComponentNotInstance(NftId instanceNftId, address instance);
|
15
|
+
error ErrorComponentProductNftAlreadySet();
|
16
|
+
error ErrorComponentWalletAddressZero();
|
17
|
+
error ErrorComponentWalletAddressIsSameAsCurrent(address newWallet);
|
18
|
+
error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
|
19
|
+
error ErrorComponentUnauthorized(address caller, uint64 requiredRoleIdNum);
|
20
|
+
error ErrorComponentNotProductService(address caller);
|
21
|
+
|
22
|
+
event LogComponentWalletAddressChanged(address newWallet);
|
23
|
+
event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
|
24
|
+
|
25
|
+
function getName() external view returns (string memory name);
|
26
|
+
|
27
|
+
// TODO remove and replace with accessmanaged target locking mechanism
|
28
|
+
function lock() external;
|
29
|
+
function unlock() external;
|
30
|
+
|
31
|
+
function getToken() external view returns (IERC20Metadata token);
|
32
|
+
|
33
|
+
function setWallet(address walletAddress) external;
|
34
|
+
function getWallet() external view returns (address walletAddress);
|
35
|
+
|
36
|
+
function getInstance() external view returns (IInstance instance);
|
37
|
+
|
38
|
+
function setProductNftId(NftId productNftId) external;
|
39
|
+
function getProductNftId() external view returns (NftId productNftId);
|
40
|
+
|
41
|
+
function getInstanceService() external view returns (IInstanceService);
|
42
|
+
function getProductService() external view returns (IProductService);
|
43
|
+
}
|
@@ -2,11 +2,14 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
import {Fee} from "../types/Fee.sol";
|
5
|
-
import {
|
5
|
+
import {IComponent} from "./IComponent.sol";
|
6
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
7
|
+
import {ReferralId} from "../types/Referral.sol";
|
6
8
|
import {NftId} from "../types/NftId.sol";
|
7
|
-
import {IBaseComponent} from "./IBaseComponent.sol";
|
8
9
|
|
9
|
-
interface IDistributionComponent is
|
10
|
+
interface IDistributionComponent is IComponent {
|
11
|
+
|
12
|
+
function getSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
|
10
13
|
|
11
14
|
function setFees(
|
12
15
|
Fee memory distributionFee
|
@@ -39,9 +42,6 @@ interface IDistributionComponent is IBaseComponent {
|
|
39
42
|
/// @dev returns true iff the referral id is valid
|
40
43
|
function referralIsValid(ReferralId referralId) external view returns (bool isValid);
|
41
44
|
|
42
|
-
/// @dev default distribution fee, ie when not using any valid referralId
|
43
|
-
function getDistributionFee() external view returns (Fee memory distributionFee);
|
44
|
-
|
45
45
|
/// @dev returns true iff the component needs to be called when selling/renewing policis
|
46
46
|
function isVerifying() external view returns (bool verifying);
|
47
47
|
}
|
@@ -1,31 +1,24 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {NftId} from "../types/NftId.sol";
|
5
4
|
import {Fee} from "../types/Fee.sol";
|
5
|
+
import {IComponent} from "./IComponent.sol";
|
6
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
7
|
+
import {NftId} from "../types/NftId.sol";
|
6
8
|
import {UFixed} from "../types/UFixed.sol";
|
7
|
-
import {IBaseComponent} from "./IBaseComponent.sol";
|
8
9
|
|
9
|
-
interface IPoolComponent is
|
10
|
+
interface IPoolComponent is IComponent {
|
10
11
|
|
11
12
|
event LogUnderwrittenByPool(NftId policyNftId, uint256 collateralizationAmount, address pool);
|
12
13
|
|
14
|
+
function getSetupInfo() external view returns (ISetup.PoolSetupInfo memory setupInfo);
|
15
|
+
|
13
16
|
function setFees(
|
14
17
|
Fee memory poolFee,
|
15
18
|
Fee memory stakingFee,
|
16
19
|
Fee memory performanceFee
|
17
20
|
) external;
|
18
21
|
|
19
|
-
/**
|
20
|
-
* @dev creates a new bundle for this pool.
|
21
|
-
*/
|
22
|
-
function createBundle(
|
23
|
-
Fee memory fee,
|
24
|
-
uint256 initialAmount,
|
25
|
-
uint256 lifetime,
|
26
|
-
bytes memory filter
|
27
|
-
) external returns(NftId bundleNftId);
|
28
|
-
|
29
22
|
function setBundleFee(
|
30
23
|
NftId policyNftId,
|
31
24
|
Fee memory fee
|
@@ -44,6 +37,10 @@ interface IPoolComponent is IBaseComponent {
|
|
44
37
|
uint256 collateralizationAmount
|
45
38
|
) external;
|
46
39
|
|
40
|
+
function lockBundle(NftId bundleNftId) external;
|
41
|
+
|
42
|
+
function unlockBundle(NftId bundleNftId) external;
|
43
|
+
|
47
44
|
/**
|
48
45
|
* @dev returns true iff the policy application data in policyData matches
|
49
46
|
* with the bundle filter criteria encoded in bundleFilter.
|
@@ -56,16 +53,8 @@ interface IPoolComponent is IBaseComponent {
|
|
56
53
|
view
|
57
54
|
returns (bool isMatching);
|
58
55
|
|
59
|
-
function
|
56
|
+
function isConfirmingApplication() external view returns (bool isConfirmingApplication);
|
60
57
|
|
61
58
|
function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
|
62
59
|
|
63
|
-
function getPoolFee() external view returns (Fee memory poolFee);
|
64
|
-
|
65
|
-
function getStakingFee() external view returns (Fee memory stakingFee);
|
66
|
-
|
67
|
-
function getPerformanceFee()
|
68
|
-
external
|
69
|
-
view
|
70
|
-
returns (Fee memory performanceFee);
|
71
60
|
}
|