@etherisc/gif-next 0.0.2-cd89a0b-062 → 0.0.2-cdac553-411
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 +108 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +116 -2
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +256 -31
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +106 -3
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +24 -163
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -225
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -216
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +336 -65
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +314 -41
- 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/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +325 -1744
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +480 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2300 -1340
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1388 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +891 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +492 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +95 -2
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -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 +211 -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/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +178 -41
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +156 -25
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +436 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +81 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +80 -3
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +80 -3
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -3
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +174 -27
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +448 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +294 -99
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +203 -18
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +249 -137
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +395 -43
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +107 -42
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- 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/ComponentModule.sol/ComponentModule.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 +80 -3
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/IService.sol/IService.json} +76 -35
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +32 -6
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +21 -16
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +120 -6
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +137 -39
- 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} +106 -94
- 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 +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- 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 +120 -6
- 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 +142 -14
- 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 +18 -2
- 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 +2 -2
- 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 +2 -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 +16 -4
- package/contracts/components/Distribution.sol +23 -12
- package/contracts/components/IBaseComponent.sol +9 -3
- package/contracts/components/IDistributionComponent.sol +5 -6
- package/contracts/components/IPoolComponent.sol +1 -4
- package/contracts/components/IProductComponent.sol +3 -7
- package/contracts/components/Pool.sol +28 -27
- package/contracts/components/Product.sol +44 -46
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/AccessManagedSimple.sol +115 -0
- package/contracts/instance/AccessManagerSimple.sol +692 -0
- package/contracts/instance/IAccessManagerSimple.sol +391 -0
- package/contracts/instance/IInstance.sol +32 -47
- package/contracts/instance/IInstanceService.sol +30 -0
- package/contracts/instance/Instance.sol +423 -65
- package/contracts/instance/InstanceAccessManager.sol +288 -0
- package/contracts/instance/InstanceReader.sol +306 -0
- package/contracts/instance/InstanceService.sol +180 -0
- package/contracts/instance/InstanceServiceManager.sol +56 -0
- package/contracts/instance/base/ComponentServiceBase.sol +4 -12
- 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 +38 -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 +44 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ComponentOwnerService.sol +145 -100
- package/contracts/instance/service/DistributionService.sol +66 -15
- package/contracts/instance/service/DistributionServiceManager.sol +53 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -1
- package/contracts/instance/service/IDistributionService.sol +1 -1
- package/contracts/instance/service/IPoolService.sol +1 -1
- package/contracts/instance/service/IProductService.sol +3 -3
- package/contracts/instance/service/PoolService.sol +108 -46
- package/contracts/instance/service/PoolServiceManager.sol +53 -0
- package/contracts/registry/ChainNft.sol +40 -25
- package/contracts/registry/IRegistry.sol +48 -27
- package/contracts/registry/IRegistryService.sol +16 -12
- package/contracts/registry/Registry.sol +167 -168
- package/contracts/registry/RegistryService.sol +160 -136
- package/contracts/registry/RegistryServiceManager.sol +38 -10
- package/contracts/registry/TokenRegistry.sol +111 -0
- package/contracts/shared/ERC165.sol +7 -3
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +3 -8
- package/contracts/{instance/base → shared}/IService.sol +3 -3
- package/contracts/shared/NftOwnable.sol +83 -34
- package/contracts/shared/ProxyManager.sol +3 -12
- package/contracts/shared/Registerable.sol +15 -42
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +54 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
- package/contracts/shared/Versionable.sol +3 -3
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRoleId.sol +1 -1
- package/contracts/test/TestService.sol +3 -5
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +3 -3
- package/contracts/types/Key32.sol +8 -3
- 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 +60 -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 +4 -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/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/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 -117
- 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 -164
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
- 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 -638
- 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 -638
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -964
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -445
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -602
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -632
- 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/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/InstanceBase.sol +0 -89
- package/contracts/instance/base/ModuleBase.sol +0 -57
- package/contracts/instance/base/ServiceBase.sol +0 -43
- 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 -71
- 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 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -95
- 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 -84
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
- package/contracts/instance/service/ProductService.sol +0 -509
- package/contracts/registry/IChainNft.sol +0 -22
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/test/TestDistribution.sol +0 -22
- package/contracts/test/TestPool.sol +0 -27
- package/contracts/test/TestProduct.sol +0 -74
- package/contracts/types/ReferralId.sol +0 -48
@@ -1,43 +1,93 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
+
import {Pool} from "../../components/Pool.sol";
|
4
5
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
6
|
import {IInstance} from "../../instance/IInstance.sol";
|
6
|
-
import {IBundle} from "../../instance/module/
|
7
|
-
import {
|
7
|
+
import {IBundle} from "../../instance/module/IBundle.sol";
|
8
|
+
import {TokenHandler} from "../../instance/module/ITreasury.sol";
|
9
|
+
import {ISetup} from "../module/ISetup.sol";
|
8
10
|
|
9
11
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
10
12
|
import {Versionable} from "../../shared/Versionable.sol";
|
13
|
+
import {INftOwnable} from "../../shared/INftOwnable.sol";
|
11
14
|
|
12
15
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
13
16
|
import {POOL, BUNDLE} from "../../types/ObjectType.sol";
|
14
|
-
import {
|
17
|
+
import {POOL_OWNER_ROLE} from "../../types/RoleId.sol";
|
18
|
+
import {Fee, FeeLib} from "../../types/Fee.sol";
|
15
19
|
import {Version, VersionLib} from "../../types/Version.sol";
|
20
|
+
import {KEEP_STATE} from "../../types/StateId.sol";
|
21
|
+
import {zeroTimestamp} from "../../types/Timestamp.sol";
|
16
22
|
|
17
|
-
import {IService} from "
|
18
|
-
import {
|
23
|
+
import {IService} from "../../shared/IService.sol";
|
24
|
+
import {Service} from "../../shared/Service.sol";
|
19
25
|
import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
|
20
26
|
import {IPoolService} from "./IPoolService.sol";
|
27
|
+
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
28
|
+
import {InstanceService} from "../InstanceService.sol";
|
29
|
+
import {InstanceReader} from "../InstanceReader.sol";
|
21
30
|
|
22
31
|
|
23
|
-
|
32
|
+
string constant POOL_SERVICE_NAME = "PoolService";
|
33
|
+
|
34
|
+
contract PoolService is
|
35
|
+
ComponentServiceBase,
|
36
|
+
IPoolService
|
37
|
+
{
|
24
38
|
using NftIdLib for NftId;
|
25
39
|
|
26
40
|
string public constant NAME = "PoolService";
|
27
41
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
42
|
+
address internal _registryAddress;
|
43
|
+
InstanceService internal _instanceService;
|
44
|
+
|
45
|
+
function _initialize(
|
46
|
+
address owner,
|
47
|
+
bytes memory data
|
48
|
+
)
|
49
|
+
internal
|
50
|
+
initializer
|
51
|
+
virtual override
|
33
52
|
{
|
53
|
+
address initialOwner = address(0);
|
54
|
+
(_registryAddress, initialOwner) = abi.decode(data, (address, address));
|
55
|
+
|
56
|
+
IRegistry registry = IRegistry(_registryAddress);
|
57
|
+
_instanceService = InstanceService(registry.getServiceAddress("InstanceService", getMajorVersion()));
|
58
|
+
|
59
|
+
_initializeService(_registryAddress, initialOwner);
|
60
|
+
|
61
|
+
_registerInterface(type(IService).interfaceId);
|
34
62
|
_registerInterface(type(IPoolService).interfaceId);
|
35
63
|
}
|
36
64
|
|
37
|
-
function getName() public pure override(
|
65
|
+
function getName() public pure override(Service, IService) returns(string memory name) {
|
38
66
|
return NAME;
|
39
67
|
}
|
40
68
|
|
69
|
+
function register(address poolComponentAddress)
|
70
|
+
external
|
71
|
+
returns (NftId poolNftId)
|
72
|
+
{
|
73
|
+
address componentOwner = msg.sender;
|
74
|
+
Pool pool = Pool(poolComponentAddress);
|
75
|
+
IInstance instance = pool.getInstance();
|
76
|
+
INftOwnable nftOwnable = INftOwnable(address(instance));
|
77
|
+
|
78
|
+
require(_instanceService.hasRole(componentOwner, POOL_OWNER_ROLE(), nftOwnable.getNftId()), "ERROR:POS-001:NOT_POOL_OWNER_ROLE");
|
79
|
+
|
80
|
+
IRegistryService registryService = getRegistryService();
|
81
|
+
(IRegistry.ObjectInfo memory poolObjInfo, ) = registryService.registerPool(
|
82
|
+
pool,
|
83
|
+
componentOwner
|
84
|
+
);
|
85
|
+
poolNftId = poolObjInfo.nftId;
|
86
|
+
|
87
|
+
ISetup.PoolSetupInfo memory initialSetup = pool.getInitialSetupInfo();
|
88
|
+
instance.createPoolSetup(poolNftId, initialSetup);
|
89
|
+
}
|
90
|
+
|
41
91
|
function setFees(
|
42
92
|
Fee memory poolFee,
|
43
93
|
Fee memory stakingFee,
|
@@ -47,13 +97,15 @@ contract PoolService is ComponentServiceBase, IPoolService {
|
|
47
97
|
override
|
48
98
|
{
|
49
99
|
(IRegistry.ObjectInfo memory poolInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
50
|
-
|
51
|
-
NftId
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
100
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
101
|
+
NftId poolNftId = poolInfo.nftId;
|
102
|
+
|
103
|
+
ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
104
|
+
poolSetupInfo.poolFee = poolFee;
|
105
|
+
poolSetupInfo.stakingFee = stakingFee;
|
106
|
+
poolSetupInfo.performanceFee = performanceFee;
|
107
|
+
|
108
|
+
instance.updatePoolSetup(poolNftId, poolSetupInfo, KEEP_STATE());
|
57
109
|
}
|
58
110
|
|
59
111
|
function createBundle(
|
@@ -68,39 +120,43 @@ contract PoolService is ComponentServiceBase, IPoolService {
|
|
68
120
|
returns(NftId bundleNftId)
|
69
121
|
{
|
70
122
|
(IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
123
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
124
|
+
NftId poolNftId = info.nftId;
|
125
|
+
|
126
|
+
IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
|
127
|
+
poolNftId,
|
128
|
+
FeeLib.zeroFee(),
|
129
|
+
filter,
|
130
|
+
stakingAmount,
|
131
|
+
0,
|
132
|
+
stakingAmount,
|
133
|
+
lifetime,
|
134
|
+
zeroTimestamp(),
|
135
|
+
zeroTimestamp()
|
136
|
+
);
|
71
137
|
|
72
138
|
// register bundle with registry
|
73
|
-
NftId poolNftId = info.nftId;
|
74
139
|
bundleNftId = getRegistryService().registerBundle(
|
75
140
|
IRegistry.ObjectInfo(
|
76
|
-
zeroNftId(),
|
141
|
+
zeroNftId(),
|
77
142
|
poolNftId,
|
78
143
|
BUNDLE(),
|
79
144
|
false, // intercepting property for bundles is defined on pool
|
80
145
|
address(0),
|
81
146
|
owner,
|
82
|
-
|
147
|
+
abi.encode(bundleInfo)
|
83
148
|
)
|
84
149
|
);
|
85
150
|
|
86
151
|
// create bundle info in instance
|
87
|
-
instance.
|
88
|
-
bundleNftId,
|
89
|
-
poolNftId,
|
90
|
-
fee,
|
91
|
-
stakingAmount,
|
92
|
-
lifetime,
|
93
|
-
filter);
|
94
|
-
|
95
|
-
// add bundle to pool in instance
|
96
|
-
instance.addBundleToPool(
|
97
|
-
bundleNftId,
|
98
|
-
poolNftId,
|
99
|
-
stakingAmount);
|
152
|
+
instance.createBundle(bundleNftId, bundleInfo);
|
100
153
|
|
154
|
+
// TODO add bundle to pool in instance
|
155
|
+
|
101
156
|
// collect capital
|
102
157
|
_processStakingByTreasury(
|
103
|
-
|
158
|
+
instanceReader,
|
159
|
+
zeroNftId(),
|
104
160
|
poolNftId,
|
105
161
|
bundleNftId,
|
106
162
|
stakingAmount);
|
@@ -115,17 +171,24 @@ contract PoolService is ComponentServiceBase, IPoolService {
|
|
115
171
|
external
|
116
172
|
override
|
117
173
|
{
|
118
|
-
(IRegistry.ObjectInfo memory
|
119
|
-
|
174
|
+
(IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
175
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
176
|
+
NftId poolNftId = info.nftId;
|
177
|
+
|
178
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
120
179
|
require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
|
121
|
-
require(
|
180
|
+
require(poolNftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
|
181
|
+
|
122
182
|
bundleInfo.fee = fee;
|
123
|
-
|
183
|
+
|
184
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
124
185
|
}
|
125
186
|
|
126
187
|
|
188
|
+
|
127
189
|
function _processStakingByTreasury(
|
128
|
-
|
190
|
+
InstanceReader instanceReader,
|
191
|
+
NftId productNftId,
|
129
192
|
NftId poolNftId,
|
130
193
|
NftId bundleNftId,
|
131
194
|
uint256 stakingAmount
|
@@ -134,14 +197,13 @@ contract PoolService is ComponentServiceBase, IPoolService {
|
|
134
197
|
{
|
135
198
|
// process token transfer(s)
|
136
199
|
if(stakingAmount > 0) {
|
137
|
-
|
138
|
-
TokenHandler tokenHandler = instance.getTokenHandler(productNftId);
|
200
|
+
TokenHandler tokenHandler = TokenHandler(instanceReader.getTokenHandler(productNftId));
|
139
201
|
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
140
|
-
|
141
|
-
|
202
|
+
ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
203
|
+
|
142
204
|
tokenHandler.transfer(
|
143
205
|
bundleOwner,
|
144
|
-
|
206
|
+
poolInfo.wallet,
|
145
207
|
stakingAmount
|
146
208
|
);
|
147
209
|
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../../shared/ProxyManager.sol";
|
6
|
+
import {PoolService} from "./PoolService.sol";
|
7
|
+
import {Registry} from "../../registry/Registry.sol";
|
8
|
+
import {RegistryService} from "../../registry/RegistryService.sol";
|
9
|
+
import {VersionLib} from "../../types/Version.sol";
|
10
|
+
|
11
|
+
contract PoolServiceManager is ProxyManager {
|
12
|
+
|
13
|
+
PoolService private _poolService;
|
14
|
+
|
15
|
+
/// @dev initializes proxy manager with pool service implementation
|
16
|
+
constructor(
|
17
|
+
address registryAddress
|
18
|
+
)
|
19
|
+
ProxyManager()
|
20
|
+
{
|
21
|
+
PoolService poolSrv = new PoolService();
|
22
|
+
bytes memory data = abi.encode(registryAddress, address(this));
|
23
|
+
IVersionable versionable = deploy(
|
24
|
+
address(poolSrv),
|
25
|
+
data);
|
26
|
+
|
27
|
+
_poolService = PoolService(address(versionable));
|
28
|
+
|
29
|
+
Registry registry = Registry(registryAddress);
|
30
|
+
address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
|
31
|
+
RegistryService registryService = RegistryService(registryServiceAddress);
|
32
|
+
|
33
|
+
registryService.registerService(_poolService);
|
34
|
+
|
35
|
+
// link ownership of instance service manager ot nft owner of instance service
|
36
|
+
_linkToNftOwnable(
|
37
|
+
address(registryAddress),
|
38
|
+
address(_poolService));
|
39
|
+
|
40
|
+
// implies that after this constructor call only upgrade functionality is available
|
41
|
+
_isDeployed = true;
|
42
|
+
}
|
43
|
+
|
44
|
+
//--- view functions ----------------------------------------------------//
|
45
|
+
function getPoolService()
|
46
|
+
external
|
47
|
+
view
|
48
|
+
returns (PoolService poolService)
|
49
|
+
{
|
50
|
+
return _poolService;
|
51
|
+
}
|
52
|
+
|
53
|
+
}
|
@@ -1,19 +1,28 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {ERC721, ERC721Enumerable} from "@
|
5
|
-
import {IERC721} from "@
|
4
|
+
import {ERC721, ERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
|
5
|
+
import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
|
6
6
|
|
7
|
-
import {IChainNft} from "./IChainNft.sol";
|
8
7
|
import {ITransferInterceptor} from "./ITransferInterceptor.sol";
|
9
8
|
|
10
|
-
contract ChainNft is ERC721Enumerable
|
11
|
-
|
12
|
-
|
9
|
+
contract ChainNft is ERC721Enumerable {
|
10
|
+
|
11
|
+
// constants
|
12
|
+
string public constant NAME = "Dezentralized Insurance Protocol NFT";
|
13
|
+
string public constant SYMBOL = "DIPNFT";
|
13
14
|
|
14
15
|
uint256 public constant PROTOCOL_NFT_ID = 1101;
|
15
16
|
uint256 public constant GLOBAL_REGISTRY_ID = 2101;
|
16
17
|
|
18
|
+
// custom errors
|
19
|
+
error CallerNotRegistry(address caller);
|
20
|
+
error RegistryAddressZero();
|
21
|
+
error NftUriEmpty();
|
22
|
+
error NftUriAlreadySet();
|
23
|
+
|
24
|
+
// contract state
|
25
|
+
|
17
26
|
// remember interceptors
|
18
27
|
mapping(uint256 tokenId => address interceptor) private _interceptor;
|
19
28
|
|
@@ -31,17 +40,24 @@ contract ChainNft is ERC721Enumerable, IChainNft {
|
|
31
40
|
uint256 internal _totalMinted;
|
32
41
|
|
33
42
|
modifier onlyRegistry() {
|
34
|
-
|
43
|
+
if (msg.sender != _registry) { revert CallerNotRegistry(msg.sender); }
|
35
44
|
_;
|
36
45
|
}
|
37
46
|
|
38
47
|
constructor(address registry) ERC721(NAME, SYMBOL) {
|
39
|
-
|
48
|
+
if (registry == address(0)) { revert RegistryAddressZero(); }
|
40
49
|
|
41
50
|
_registry = registry;
|
42
|
-
|
43
51
|
_chainIdInt = block.chainid;
|
44
|
-
_chainIdDigits =
|
52
|
+
_chainIdDigits = 0;
|
53
|
+
|
54
|
+
// count digis
|
55
|
+
uint256 num = _chainIdInt;
|
56
|
+
while (num != 0) {
|
57
|
+
_chainIdDigits++;
|
58
|
+
num /= 10;
|
59
|
+
}
|
60
|
+
|
45
61
|
_chainIdMultiplier = 10 ** _chainIdDigits;
|
46
62
|
_idNext = 4;
|
47
63
|
}
|
@@ -77,8 +93,8 @@ contract ChainNft is ERC721Enumerable, IChainNft {
|
|
77
93
|
_uri[tokenId] = uri;
|
78
94
|
}
|
79
95
|
|
80
|
-
_safeMint(to, tokenId);
|
81
96
|
_totalMinted++;
|
97
|
+
_safeMint(to, tokenId);
|
82
98
|
}
|
83
99
|
|
84
100
|
|
@@ -95,7 +111,7 @@ contract ChainNft is ERC721Enumerable, IChainNft {
|
|
95
111
|
}
|
96
112
|
|
97
113
|
|
98
|
-
function burn(uint256 tokenId) external
|
114
|
+
function burn(uint256 tokenId) external onlyRegistry {
|
99
115
|
_requireOwned(tokenId);
|
100
116
|
_burn(tokenId);
|
101
117
|
delete _uri[tokenId];
|
@@ -104,29 +120,36 @@ contract ChainNft is ERC721Enumerable, IChainNft {
|
|
104
120
|
function setURI(
|
105
121
|
uint256 tokenId,
|
106
122
|
string memory uri
|
107
|
-
) external
|
108
|
-
|
123
|
+
) external onlyRegistry {
|
124
|
+
if (bytes(uri).length == 0) { revert NftUriEmpty(); }
|
125
|
+
if (bytes(_uri[tokenId]).length > 0) { revert NftUriAlreadySet(); }
|
109
126
|
|
110
127
|
_requireOwned(tokenId);
|
111
128
|
_uri[tokenId] = uri;
|
112
129
|
}
|
113
130
|
|
114
|
-
function exists(uint256 tokenId) external view
|
131
|
+
function exists(uint256 tokenId) external view returns (bool) {
|
115
132
|
return _ownerOf(tokenId) != address(0);
|
116
133
|
}
|
117
134
|
|
118
135
|
function tokenURI(
|
119
136
|
uint256 tokenId
|
120
137
|
) public view override returns (string memory) {
|
138
|
+
// gif generally does not revert for view functions
|
139
|
+
// this is an exception to keep the openzeppelin nft semantics
|
121
140
|
_requireOwned(tokenId);
|
122
141
|
return _uri[tokenId];
|
123
142
|
}
|
124
143
|
|
125
|
-
function
|
144
|
+
function getInterceptor(uint256 tokenId) external view returns (address) {
|
145
|
+
return _interceptor[tokenId];
|
146
|
+
}
|
147
|
+
|
148
|
+
function getRegistryAddress() external view returns (address) {
|
126
149
|
return _registry;
|
127
150
|
}
|
128
151
|
|
129
|
-
function totalMinted() external view
|
152
|
+
function totalMinted() external view returns (uint256) {
|
130
153
|
return _totalMinted;
|
131
154
|
}
|
132
155
|
|
@@ -176,12 +199,4 @@ contract ChainNft is ERC721Enumerable, IChainNft {
|
|
176
199
|
id = calculateTokenId(_idNext);
|
177
200
|
_idNext++;
|
178
201
|
}
|
179
|
-
|
180
|
-
function _countDigits(uint256 num) private pure returns (uint256 count) {
|
181
|
-
count = 0;
|
182
|
-
while (num != 0) {
|
183
|
-
count++;
|
184
|
-
num /= 10;
|
185
|
-
}
|
186
|
-
}
|
187
202
|
}
|
@@ -1,21 +1,42 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC165} from "@
|
4
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
5
|
|
6
|
-
import {
|
6
|
+
import {ChainNft} from "./ChainNft.sol";
|
7
7
|
import {NftId} from "../types/NftId.sol";
|
8
8
|
import {ObjectType} from "../types/ObjectType.sol";
|
9
9
|
import {VersionPart} from "../types/Version.sol";
|
10
|
-
import {IChainNft} from "./IChainNft.sol";
|
11
10
|
|
12
|
-
interface IRegistry is IERC165
|
13
|
-
|
14
|
-
event LogRegistration(NftId indexed nftId, NftId parentNftId, ObjectType objectType, address objectAddress, address initialOwner);
|
11
|
+
interface IRegistry is IERC165 {
|
15
12
|
|
13
|
+
event LogInitialMajorVersionSet(VersionPart majorVersion);
|
14
|
+
event LogMajorVersionSet(VersionPart majorVersionMax);
|
15
|
+
event LogRegistration(ObjectInfo info);
|
16
|
+
event LogTokenStateSet(address token, VersionPart majorVersion, bool active);
|
16
17
|
event LogServiceNameRegistration(string serviceName, VersionPart majorVersion);
|
17
18
|
|
18
|
-
|
19
|
+
// supported versions
|
20
|
+
error MajorVersionMaxIncreaseInvalid(VersionPart newMajorVersionMax, VersionPart existingMaxMajorVersion);
|
21
|
+
|
22
|
+
// token whitelisting
|
23
|
+
error TokenNotRegistered(address token);
|
24
|
+
error NotToken(address token);
|
25
|
+
error TokenMajorVersionInvalid(VersionPart majorVersion);
|
26
|
+
|
27
|
+
// register
|
28
|
+
error NotRegistryService();
|
29
|
+
error ZeroParentAddress();
|
30
|
+
error ContractAlreadyRegistered(address objectAddress);
|
31
|
+
error InvalidServiceVersion(VersionPart majorVersion);
|
32
|
+
error ServiceNameAlreadyRegistered(string name, VersionPart majorVersion);
|
33
|
+
|
34
|
+
// approve
|
35
|
+
error NotOwner(address account);
|
36
|
+
error NotRegisteredContract(NftId registrarNftId);
|
37
|
+
error NotService(NftId registrarNftId);
|
38
|
+
error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
|
39
|
+
|
19
40
|
|
20
41
|
struct ObjectInfo {
|
21
42
|
NftId nftId;
|
@@ -26,42 +47,40 @@ interface IRegistry is IERC165, IOwnable {
|
|
26
47
|
address initialOwner;
|
27
48
|
bytes data;
|
28
49
|
}// TODO delete nftId and initialOwner(if not used) from struct
|
50
|
+
// TODO strong disagree, keep nftId there (lets keep get object info return object consistent)
|
51
|
+
|
52
|
+
function setMajorVersion(VersionPart newMajorVersionMax) external;
|
29
53
|
|
30
54
|
function register(ObjectInfo memory info) external returns (NftId nftId);
|
31
|
-
|
32
|
-
function
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
ObjectType object,
|
40
|
-
ObjectType parent
|
41
|
-
) external;
|
42
|
-
|
43
|
-
function allowance(
|
44
|
-
NftId registrar,
|
45
|
-
ObjectType object
|
46
|
-
) external view returns (bool);
|
55
|
+
|
56
|
+
function setTokenActive(address token, VersionPart majorVersion, bool active) external;
|
57
|
+
|
58
|
+
function getMajorVersionMin() external view returns (VersionPart);
|
59
|
+
|
60
|
+
function getMajorVersionMax() external view returns (VersionPart);
|
61
|
+
|
62
|
+
function getMajorVersion() external view returns (VersionPart);
|
47
63
|
|
48
64
|
function getObjectCount() external view returns (uint256);
|
49
65
|
|
50
|
-
|
66
|
+
function getNftId() external view returns (NftId nftId);
|
67
|
+
|
51
68
|
function getNftId(address objectAddress) external view returns (NftId nftId);
|
52
69
|
|
53
70
|
function ownerOf(NftId nftId) external view returns (address);
|
54
71
|
|
55
72
|
function ownerOf(address contractAddress) external view returns (address);
|
56
|
-
|
73
|
+
|
57
74
|
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory info);
|
58
|
-
|
75
|
+
|
59
76
|
function getObjectInfo(address object) external view returns (ObjectInfo memory info);
|
60
77
|
|
61
78
|
function isRegistered(NftId nftId) external view returns (bool);
|
62
79
|
|
63
80
|
function isRegistered(address contractAddress) external view returns (bool);
|
64
81
|
|
82
|
+
function isTokenActive(address token, VersionPart majorVersion) external view returns (bool);
|
83
|
+
|
65
84
|
function getServiceName(NftId nftId) external view returns (string memory name);
|
66
85
|
|
67
86
|
function getServiceAddress(
|
@@ -69,5 +88,7 @@ interface IRegistry is IERC165, IOwnable {
|
|
69
88
|
VersionPart majorVersion
|
70
89
|
) external view returns (address serviceAddress);
|
71
90
|
|
72
|
-
function getChainNft() external view returns (
|
91
|
+
function getChainNft() external view returns (ChainNft);
|
92
|
+
|
93
|
+
function getOwner() external view returns (address);
|
73
94
|
}
|
@@ -1,27 +1,31 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {NftId} from "
|
5
|
-
import {ObjectType} from "
|
6
|
-
import {RoleId} from "
|
7
|
-
import {IService} from "
|
8
|
-
import {IRegistry} from "
|
4
|
+
import {NftId} from "../types/NftId.sol";
|
5
|
+
import {ObjectType} from "../types/ObjectType.sol";
|
6
|
+
import {RoleId} from "../types/RoleId.sol";
|
7
|
+
import {IService} from "../shared/IService.sol";
|
8
|
+
import {IRegistry} from "./IRegistry.sol";
|
9
9
|
|
10
|
-
import {IRegisterable} from "
|
11
|
-
import {IBaseComponent} from "
|
10
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
11
|
+
import {IBaseComponent} from "../components/IBaseComponent.sol";
|
12
12
|
|
13
13
|
interface IRegistryService is IService {
|
14
14
|
|
15
|
-
function registerToken(address tokenAddress) external returns(NftId nftId);
|
16
|
-
|
17
15
|
function registerService(IService service) external returns(IRegistry.ObjectInfo memory info, bytes memory data);
|
18
16
|
|
19
|
-
function registerComponent(IBaseComponent component, ObjectType componentType, address owner)
|
20
|
-
external returns(IRegistry.ObjectInfo memory info, bytes memory data);
|
21
|
-
|
22
17
|
function registerInstance(IRegisterable instance)
|
23
18
|
external returns(IRegistry.ObjectInfo memory info, bytes memory data);
|
24
19
|
|
20
|
+
function registerProduct(IBaseComponent product, address owner)
|
21
|
+
external returns(IRegistry.ObjectInfo memory info, bytes memory data);
|
22
|
+
|
23
|
+
function registerPool(IBaseComponent pool, address owner)
|
24
|
+
external returns(IRegistry.ObjectInfo memory info, bytes memory data);
|
25
|
+
|
26
|
+
function registerDistribution(IBaseComponent distribution, address owner)
|
27
|
+
external returns(IRegistry.ObjectInfo memory info, bytes memory data);
|
28
|
+
|
25
29
|
function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId); // -> easy to upgrade
|
26
30
|
|
27
31
|
function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
|