@etherisc/gif-next 0.0.2-2a59cd5-352 → 0.0.2-2aa1035-611
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 +6 -83
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +90 -145
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +145 -233
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +158 -73
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +169 -150
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +350 -180
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +162 -145
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +298 -288
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +95 -218
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +274 -2000
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +183 -203
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +398 -2776
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +491 -127
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +253 -236
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +216 -451
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +184 -121
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2663 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +100 -215
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- 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 +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +56 -73
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +164 -379
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +649 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +433 -425
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +244 -105
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1072 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +685 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +657 -318
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +270 -115
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +99 -236
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +235 -319
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +602 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +373 -158
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +417 -232
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +568 -120
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +518 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +64 -163
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +563 -366
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +220 -121
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +771 -247
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +237 -102
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +988 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +689 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +136 -271
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +186 -107
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +4 -193
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +28 -277
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +182 -113
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +34 -67
- 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 +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +4 -30
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +4 -30
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -21
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +64 -163
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -150
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +10 -62
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -23
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +171 -88
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +11 -74
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -23
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +72 -203
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- 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/shared/Versionable.sol/Versionable.json +0 -150
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +11 -74
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +90 -253
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- 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 +6 -188
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
- 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 +1 -1
- 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/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
- 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 +2 -2
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- 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 +38 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- 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 +2 -2
- package/contracts/components/Component.sol +100 -83
- package/contracts/components/Distribution.sol +22 -46
- package/contracts/components/IComponent.sol +43 -17
- package/contracts/components/IDistributionComponent.sol +1 -30
- package/contracts/components/IPoolComponent.sol +73 -47
- package/contracts/components/IProductComponent.sol +3 -2
- package/contracts/components/Pool.sol +178 -130
- package/contracts/components/Product.sol +172 -76
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/instance/BundleManager.sol +10 -9
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +43 -49
- package/contracts/instance/IInstanceService.sol +32 -12
- package/contracts/instance/Instance.sol +129 -173
- package/contracts/instance/InstanceAccessManager.sol +404 -160
- package/contracts/instance/InstanceAuthorizationsLib.sol +300 -0
- package/contracts/instance/InstanceReader.sol +43 -16
- package/contracts/instance/InstanceService.sol +160 -293
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +208 -0
- package/contracts/instance/ObjectManager.sol +6 -8
- package/contracts/instance/base/ComponentService.sol +53 -39
- package/contracts/instance/base/KeyValueStore.sol +13 -5
- package/contracts/instance/base/Lifecycle.sol +23 -6
- package/contracts/instance/module/IAccess.sol +21 -14
- package/contracts/instance/module/IBundle.sol +8 -5
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +41 -9
- package/contracts/instance/module/ISetup.sol +7 -21
- package/contracts/instance/service/ApplicationService.sol +75 -158
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +230 -88
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +239 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +156 -96
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +9 -30
- package/contracts/instance/service/IBundleService.sol +74 -26
- package/contracts/instance/service/IClaimService.sol +92 -0
- package/contracts/instance/service/IDistributionService.sol +26 -6
- package/contracts/instance/service/IPolicyService.sol +89 -38
- package/contracts/instance/service/IPoolService.sol +85 -3
- package/contracts/instance/service/IPricingService.sol +36 -0
- package/contracts/instance/service/PolicyService.sol +358 -305
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +246 -19
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/PricingService.sol +275 -0
- package/contracts/instance/service/PricingServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +37 -60
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +2 -0
- package/contracts/registry/IRegistryService.sol +11 -10
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +23 -20
- package/contracts/registry/RegistryService.sol +56 -47
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +26 -33
- package/contracts/registry/TokenRegistry.sol +13 -10
- package/contracts/shared/ERC165.sol +2 -1
- package/contracts/shared/INftOwnable.sol +4 -9
- package/contracts/shared/IRegistryLinked.sol +0 -3
- package/contracts/shared/IService.sol +4 -4
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +10 -80
- package/contracts/shared/ProxyManager.sol +98 -24
- package/contracts/shared/Registerable.sol +3 -10
- package/contracts/shared/RegistryLinked.sol +10 -26
- package/contracts/shared/Service.sol +29 -17
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +1 -90
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +70 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +75 -0
- package/contracts/types/Fee.sol +13 -5
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +12 -7
- package/contracts/types/PayoutId.sol +82 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +16 -9
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +7 -2
- package/contracts/types/Timestamp.sol +18 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
|
@@ -1,34 +1,56 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity ^0.8.20;
|
|
3
3
|
|
|
4
|
-
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
|
|
5
|
-
import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
|
|
6
4
|
import {ITransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
|
|
7
5
|
|
|
6
|
+
import {Blocknumber, blockNumber} from "../types/Blocknumber.sol";
|
|
8
7
|
import {IVersionable} from "./IVersionable.sol";
|
|
9
8
|
import {NftOwnable} from "./NftOwnable.sol";
|
|
9
|
+
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
|
|
10
|
+
import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
|
|
11
|
+
import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
|
|
10
12
|
import {UpgradableProxyWithAdmin} from "./UpgradableProxyWithAdmin.sol";
|
|
13
|
+
import {Version, VersionLib} from "../types/Version.sol";
|
|
11
14
|
|
|
12
15
|
/// @dev manages proxy deployments for upgradable contracs of type IVersionable
|
|
13
16
|
contract ProxyManager is
|
|
14
17
|
NftOwnable
|
|
15
18
|
{
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
struct VersionInfo {
|
|
21
|
+
Version version;
|
|
22
|
+
address implementation;
|
|
23
|
+
address activatedBy;
|
|
24
|
+
Timestamp activatedAt;
|
|
25
|
+
Blocknumber activatedIn;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
event LogProxyManagerVersionableDeployed(address indexed proxy, address initialImplementation);
|
|
29
|
+
event LogProxyManagerVersionableUpgraded(address indexed proxy, address upgradedImplementation);
|
|
20
30
|
|
|
21
|
-
error
|
|
22
|
-
error
|
|
23
|
-
|
|
31
|
+
error ErrorProxyManagerAlreadyDeployed();
|
|
32
|
+
error ErrorProxyManagerNotYetDeployed();
|
|
33
|
+
|
|
34
|
+
error ErrorProxyManagerZeroVersion();
|
|
35
|
+
error ErrorProxyManagerNextVersionNotIncreasing(Version nextVersion);
|
|
24
36
|
|
|
25
37
|
UpgradableProxyWithAdmin internal _proxy;
|
|
26
|
-
|
|
38
|
+
|
|
39
|
+
// state to keep version history
|
|
40
|
+
mapping(Version version => VersionInfo info) _versionHistory;
|
|
41
|
+
Version [] _versions;
|
|
27
42
|
|
|
28
43
|
/// @dev only used to capture proxy owner
|
|
29
|
-
constructor()
|
|
44
|
+
constructor(address registry)
|
|
30
45
|
{
|
|
31
|
-
|
|
46
|
+
initializeProxyManager(registry);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function initializeProxyManager(address registry)
|
|
50
|
+
public
|
|
51
|
+
initializer()
|
|
52
|
+
{
|
|
53
|
+
initializeNftOwnable(msg.sender, registry);
|
|
32
54
|
}
|
|
33
55
|
|
|
34
56
|
/// @dev deploy initial contract
|
|
@@ -38,22 +60,23 @@ contract ProxyManager is
|
|
|
38
60
|
onlyOwner()
|
|
39
61
|
returns (IVersionable versionable)
|
|
40
62
|
{
|
|
41
|
-
if (
|
|
42
|
-
|
|
63
|
+
if (_versions.length > 0) {
|
|
64
|
+
revert ErrorProxyManagerAlreadyDeployed();
|
|
65
|
+
}
|
|
43
66
|
|
|
44
67
|
address currentProxyOwner = getOwner(); // used by implementation
|
|
45
68
|
address initialProxyAdminOwner = address(this); // used by proxy
|
|
46
|
-
bytes memory data = getDeployData(initialImplementation, currentProxyOwner, initializationData);
|
|
47
69
|
|
|
48
70
|
_proxy = new UpgradableProxyWithAdmin(
|
|
49
71
|
initialImplementation,
|
|
50
72
|
initialProxyAdminOwner,
|
|
51
|
-
|
|
73
|
+
getDeployData(currentProxyOwner, initializationData)
|
|
52
74
|
);
|
|
53
75
|
|
|
54
76
|
versionable = IVersionable(address(_proxy));
|
|
77
|
+
_updateVersionHistory(versionable.getVersion(), initialImplementation, currentProxyOwner);
|
|
55
78
|
|
|
56
|
-
emit
|
|
79
|
+
emit LogProxyManagerVersionableDeployed(address(_proxy), initialImplementation);
|
|
57
80
|
}
|
|
58
81
|
|
|
59
82
|
/// @dev upgrade existing contract
|
|
@@ -63,33 +86,84 @@ contract ProxyManager is
|
|
|
63
86
|
onlyOwner()
|
|
64
87
|
returns (IVersionable versionable)
|
|
65
88
|
{
|
|
66
|
-
if (
|
|
89
|
+
if (_versions.length == 0) {
|
|
90
|
+
revert ErrorProxyManagerNotYetDeployed();
|
|
91
|
+
}
|
|
67
92
|
|
|
68
93
|
address currentProxyOwner = getOwner();
|
|
69
94
|
ProxyAdmin proxyAdmin = getProxy().getProxyAdmin();
|
|
70
95
|
ITransparentUpgradeableProxy proxy = ITransparentUpgradeableProxy(address(_proxy));
|
|
71
|
-
bytes memory data = getUpgradeData(newImplementation, currentProxyOwner, upgradeData);
|
|
72
96
|
|
|
73
97
|
proxyAdmin.upgradeAndCall(
|
|
74
98
|
proxy,
|
|
75
99
|
newImplementation,
|
|
76
|
-
|
|
100
|
+
getUpgradeData(upgradeData));
|
|
77
101
|
|
|
78
102
|
versionable = IVersionable(address(_proxy));
|
|
103
|
+
_updateVersionHistory(versionable.getVersion(), newImplementation, currentProxyOwner);
|
|
79
104
|
|
|
80
|
-
emit
|
|
105
|
+
emit LogProxyManagerVersionableUpgraded(address(_proxy), newImplementation);
|
|
81
106
|
|
|
82
107
|
}
|
|
83
108
|
|
|
84
|
-
function getDeployData(address
|
|
85
|
-
return abi.encodeWithSelector(
|
|
109
|
+
function getDeployData(address proxyOwner, bytes memory deployData) public pure returns (bytes memory data) {
|
|
110
|
+
return abi.encodeWithSelector(
|
|
111
|
+
IVersionable.initializeVersionable.selector,
|
|
112
|
+
proxyOwner,
|
|
113
|
+
deployData);
|
|
86
114
|
}
|
|
87
115
|
|
|
88
|
-
function getUpgradeData(
|
|
89
|
-
return abi.encodeWithSelector(
|
|
116
|
+
function getUpgradeData(bytes memory upgradeData) public pure returns (bytes memory data) {
|
|
117
|
+
return abi.encodeWithSelector(
|
|
118
|
+
IVersionable.upgradeVersionable.selector,
|
|
119
|
+
upgradeData);
|
|
90
120
|
}
|
|
91
121
|
|
|
92
122
|
function getProxy() public returns (UpgradableProxyWithAdmin) {
|
|
93
123
|
return _proxy;
|
|
94
124
|
}
|
|
125
|
+
|
|
126
|
+
function getVersion() external view virtual returns(Version) {
|
|
127
|
+
return IVersionable(address(_proxy)).getVersion();
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function getVersionCount() external view returns(uint256) {
|
|
131
|
+
return _versions.length;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function getVersion(uint256 idx) external view returns(Version) {
|
|
135
|
+
return _versions[idx];
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function getVersionInfo(Version _version) external view returns(VersionInfo memory) {
|
|
139
|
+
return _versionHistory[_version];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function _updateVersionHistory(
|
|
143
|
+
Version newVersion,
|
|
144
|
+
address implementation,
|
|
145
|
+
address activatedBy
|
|
146
|
+
)
|
|
147
|
+
private
|
|
148
|
+
{
|
|
149
|
+
if(newVersion == VersionLib.zeroVersion()) {
|
|
150
|
+
revert ErrorProxyManagerZeroVersion();
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if(_versions.length > 0) {
|
|
154
|
+
if(newVersion.toInt() <= _versions[_versions.length-1].toInt()) {
|
|
155
|
+
revert ErrorProxyManagerNextVersionNotIncreasing(newVersion);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// update version history
|
|
160
|
+
_versions.push(newVersion);
|
|
161
|
+
_versionHistory[newVersion] = VersionInfo(
|
|
162
|
+
newVersion,
|
|
163
|
+
implementation,
|
|
164
|
+
activatedBy,
|
|
165
|
+
TimestampLib.blockTimestamp(),
|
|
166
|
+
blockNumber()
|
|
167
|
+
);
|
|
168
|
+
}
|
|
95
169
|
}
|
|
@@ -18,8 +18,6 @@ contract Registerable is
|
|
|
18
18
|
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
|
|
19
19
|
bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
|
|
20
20
|
|
|
21
|
-
error ErrorRegisterableNotRegistry(address registryAddress);
|
|
22
|
-
|
|
23
21
|
struct RegisterableStorage {
|
|
24
22
|
NftId _parentNftId;
|
|
25
23
|
ObjectType _objectType;
|
|
@@ -39,7 +37,7 @@ contract Registerable is
|
|
|
39
37
|
ObjectType objectType,
|
|
40
38
|
bool isInterceptor,
|
|
41
39
|
address initialOwner,
|
|
42
|
-
bytes memory data
|
|
40
|
+
bytes memory registryData // writeonly data that will saved in the object info record of the registry
|
|
43
41
|
)
|
|
44
42
|
public
|
|
45
43
|
virtual
|
|
@@ -49,16 +47,11 @@ contract Registerable is
|
|
|
49
47
|
initialOwner,
|
|
50
48
|
registryAddress);
|
|
51
49
|
|
|
52
|
-
// TODO check parentNftId -> registry.isRegistered(parentNftId)
|
|
53
|
-
// TODO check object-parent type pair -> registry.isValidTypeCombo() or something...verify with registry that setup will be able to register...
|
|
54
|
-
|
|
55
50
|
RegisterableStorage storage $ = _getRegisterableStorage();
|
|
56
51
|
$._parentNftId = parentNftId;
|
|
57
52
|
$._objectType = objectType;
|
|
58
53
|
$._isInterceptor = isInterceptor;
|
|
59
|
-
$._data =
|
|
60
|
-
|
|
61
|
-
registerInterface(type(IRegisterable).interfaceId);
|
|
54
|
+
$._data = registryData;
|
|
62
55
|
}
|
|
63
56
|
|
|
64
57
|
|
|
@@ -75,7 +68,7 @@ contract Registerable is
|
|
|
75
68
|
$._objectType,
|
|
76
69
|
$._isInterceptor,
|
|
77
70
|
address(this),
|
|
78
|
-
|
|
71
|
+
getOwner(),
|
|
79
72
|
$._data);
|
|
80
73
|
}
|
|
81
74
|
}
|
|
@@ -21,32 +21,6 @@ contract RegistryLinked is
|
|
|
21
21
|
virtual
|
|
22
22
|
onlyInitializing()
|
|
23
23
|
{
|
|
24
|
-
_setRegistry(registryAddress);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
function getRegistry() public view returns (IRegistry) {
|
|
29
|
-
return _registry;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
function getRegistryAddress() public view returns (address) {
|
|
34
|
-
return address(_registry);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
function _setRegistry(address registryAddress)
|
|
39
|
-
internal
|
|
40
|
-
{
|
|
41
|
-
|
|
42
|
-
if (address(_registry) != address(0)) {
|
|
43
|
-
revert ErrorRegistryAlreadyInitialized(address(_registry));
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (registryAddress == address(0)) {
|
|
47
|
-
revert ErrorRegistryAddressZero();
|
|
48
|
-
}
|
|
49
|
-
|
|
50
24
|
if (registryAddress.code.length == 0) {
|
|
51
25
|
revert ErrorNotRegistry(registryAddress);
|
|
52
26
|
}
|
|
@@ -61,4 +35,14 @@ contract RegistryLinked is
|
|
|
61
35
|
revert ErrorNotRegistry(registryAddress);
|
|
62
36
|
}
|
|
63
37
|
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
function getRegistry() public view returns (IRegistry) {
|
|
41
|
+
return _registry;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
function getRegistryAddress() public view returns (address) {
|
|
46
|
+
return address(_registry);
|
|
47
|
+
}
|
|
64
48
|
}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity ^0.8.19;
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
|
5
|
+
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
|
6
|
+
|
|
7
|
+
import {ObjectType, REGISTRY, SERVICE} from "../types/ObjectType.sol";
|
|
5
8
|
import {NftId, zeroNftId} from "../types/NftId.sol";
|
|
6
|
-
import {Version, VersionPart, VersionLib} from "../types/Version.sol";
|
|
9
|
+
import {Version, VersionPart, VersionLib, VersionPartLib} from "../types/Version.sol";
|
|
7
10
|
|
|
8
11
|
import {Versionable} from "./Versionable.sol";
|
|
9
12
|
import {IService} from "./IService.sol";
|
|
@@ -18,13 +21,11 @@ import {IRegistry} from "../registry/IRegistry.sol";
|
|
|
18
21
|
abstract contract Service is
|
|
19
22
|
Registerable,
|
|
20
23
|
Versionable,
|
|
24
|
+
AccessManagedUpgradeable,
|
|
21
25
|
IService
|
|
22
26
|
{
|
|
23
|
-
function getDomain() public pure virtual override returns(ObjectType);
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
return getVersion().toMajorPart();
|
|
27
|
-
}
|
|
28
|
+
uint8 private constant GIF_MAJOR_VERSION = 3;
|
|
28
29
|
|
|
29
30
|
// from Versionable
|
|
30
31
|
function getVersion()
|
|
@@ -33,28 +34,39 @@ abstract contract Service is
|
|
|
33
34
|
virtual override (IVersionable, Versionable)
|
|
34
35
|
returns(Version)
|
|
35
36
|
{
|
|
36
|
-
return VersionLib.toVersion(
|
|
37
|
+
return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
function initializeService(
|
|
40
41
|
address registry,
|
|
42
|
+
address authority, // real authority for registry service adress(0) for other services
|
|
41
43
|
address initialOwner
|
|
42
44
|
)
|
|
43
45
|
public
|
|
44
46
|
virtual
|
|
45
47
|
onlyInitializing()
|
|
46
48
|
{
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
initializeRegisterable(
|
|
50
|
+
registry,
|
|
51
|
+
IRegistry(registry).getNftId(),
|
|
52
|
+
SERVICE(),
|
|
53
|
+
false, // is interceptor
|
|
54
|
+
initialOwner,
|
|
55
|
+
""); // data
|
|
51
56
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
// externally provided authority
|
|
58
|
+
if(authority != address(0)) {
|
|
59
|
+
__AccessManaged_init(authority);
|
|
60
|
+
} else {
|
|
61
|
+
address registryServiceAddress = getRegistry().getServiceAddress(
|
|
62
|
+
REGISTRY(),
|
|
63
|
+
VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
|
|
64
|
+
|
|
65
|
+
// copy authority from already registered registry services
|
|
66
|
+
__AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
|
|
67
|
+
}
|
|
55
68
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return IRegistry(registryAddress).getNftId(registryAddress);
|
|
69
|
+
registerInterface(type(IAccessManaged).interfaceId);
|
|
70
|
+
registerInterface(type(IService).interfaceId);
|
|
59
71
|
}
|
|
60
72
|
}
|
|
@@ -4,6 +4,8 @@ pragma solidity ^0.8.20;
|
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
|
5
5
|
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
6
6
|
|
|
7
|
+
/// @dev token specific transfer helper
|
|
8
|
+
/// relies internally on oz SafeERC20.safeTransferFrom
|
|
7
9
|
contract TokenHandler {
|
|
8
10
|
IERC20Metadata private _token;
|
|
9
11
|
|
|
@@ -11,17 +13,21 @@ contract TokenHandler {
|
|
|
11
13
|
_token = IERC20Metadata(token);
|
|
12
14
|
}
|
|
13
15
|
|
|
14
|
-
// TODO add logging
|
|
15
16
|
function transfer(
|
|
16
17
|
address from,
|
|
17
18
|
address to,
|
|
18
|
-
uint256 amount
|
|
19
|
-
)
|
|
19
|
+
uint256 amount
|
|
20
|
+
)
|
|
21
|
+
external
|
|
22
|
+
{
|
|
20
23
|
SafeERC20.safeTransferFrom(_token, from, to, amount);
|
|
21
|
-
// _token.transferFrom(from, to, amount);
|
|
22
24
|
}
|
|
23
25
|
|
|
24
|
-
function getToken()
|
|
26
|
+
function getToken()
|
|
27
|
+
external
|
|
28
|
+
view
|
|
29
|
+
returns (IERC20Metadata)
|
|
30
|
+
{
|
|
25
31
|
return _token;
|
|
26
32
|
}
|
|
27
33
|
}
|
|
@@ -3,84 +3,39 @@ pragma solidity ^0.8.20;
|
|
|
3
3
|
|
|
4
4
|
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
|
5
5
|
|
|
6
|
-
import {Blocknumber, blockNumber} from "../types/Blocknumber.sol";
|
|
7
|
-
import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
|
|
8
|
-
import {Version, VersionPart, VersionLib} from "../types/Version.sol";
|
|
9
|
-
|
|
10
6
|
import {IVersionable} from "./IVersionable.sol";
|
|
11
|
-
|
|
7
|
+
import {Version, VersionLib} from "../types/Version.sol";
|
|
12
8
|
|
|
13
9
|
|
|
14
10
|
abstract contract Versionable is
|
|
15
11
|
Initializable,
|
|
16
12
|
IVersionable
|
|
17
13
|
{
|
|
18
|
-
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Versionable.sol")) - 1)) & ~bytes32(uint256(0xff))
|
|
19
|
-
bytes32 private constant VERSIONABLE_LOCATION_V1 = 0x4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
/// @custom:storage-location erc7201:gif-next.contracts.shared.Versionable.sol
|
|
23
|
-
struct VersionableStorage {
|
|
24
|
-
mapping(Version version => VersionInfo info) _versionHistory;
|
|
25
|
-
Version [] _versions;
|
|
26
|
-
Version _v1;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
14
|
constructor() {
|
|
31
15
|
_disableInitializers();
|
|
32
16
|
}
|
|
33
|
-
// TODO write test where new version of private _updateVersionHistory is added and used...
|
|
34
17
|
|
|
35
18
|
function initializeVersionable(
|
|
36
|
-
address implementation,
|
|
37
19
|
address activatedBy,
|
|
38
20
|
bytes memory data
|
|
39
21
|
)
|
|
40
22
|
public
|
|
41
23
|
initializer
|
|
42
24
|
{
|
|
43
|
-
_updateVersionHistory(implementation, activatedBy);
|
|
44
25
|
_initialize(activatedBy, data);
|
|
45
26
|
}
|
|
46
27
|
|
|
47
|
-
// TODO activatedBy MUST ALWAYS be an owner?
|
|
48
28
|
function upgradeVersionable(
|
|
49
|
-
address implementation,
|
|
50
|
-
address activatedBy,
|
|
51
29
|
bytes memory data
|
|
52
30
|
)
|
|
53
31
|
external
|
|
54
32
|
reinitializer(VersionLib.toUint64(getVersion()))
|
|
55
33
|
{
|
|
56
|
-
_updateVersionHistory(implementation, activatedBy);
|
|
57
34
|
_upgrade(data);
|
|
58
35
|
}
|
|
59
36
|
|
|
60
|
-
function isInitialized(Version _version) public override view returns(bool) {
|
|
61
|
-
return _getVersionableStorage()._versionHistory[_version].activatedIn.toInt() > 0;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
37
|
function getVersion() public pure virtual returns(Version);
|
|
65
38
|
|
|
66
|
-
function getVersionCount() public view override returns(uint256) {
|
|
67
|
-
return _getVersionableStorage()._versions.length;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function getVersion(uint256 idx) public view override returns(Version) {
|
|
71
|
-
return _getVersionableStorage()._versions[idx];
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
function getVersionInfo(Version _version) public override view returns(VersionInfo memory) {
|
|
75
|
-
return _getVersionableStorage()._versionHistory[_version];
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
function getInitializedVersion() public view returns(uint64) {
|
|
79
|
-
return _getInitializedVersion();
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
39
|
// IMPORTANT each version must implement this function
|
|
85
40
|
// each implementation MUST use onlyInitialising modifier
|
|
86
41
|
// each implementation MUST call intializers of all base contracts...
|
|
@@ -92,7 +47,6 @@ abstract contract Versionable is
|
|
|
92
47
|
revert();
|
|
93
48
|
}
|
|
94
49
|
|
|
95
|
-
|
|
96
50
|
// IMPORTANT each version except version "1" must implement this function
|
|
97
51
|
// each implementation MUST use onlyInitialising modifier
|
|
98
52
|
function _upgrade(bytes memory data)
|
|
@@ -102,47 +56,4 @@ abstract contract Versionable is
|
|
|
102
56
|
{
|
|
103
57
|
revert();
|
|
104
58
|
}
|
|
105
|
-
|
|
106
|
-
function _getVersionableStorage() private pure returns (VersionableStorage storage $) {
|
|
107
|
-
assembly {
|
|
108
|
-
$.slot := VERSIONABLE_LOCATION_V1
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// can only be called once per contract
|
|
113
|
-
// needs to be called inside the proxy upgrade tx
|
|
114
|
-
// TODO run reinitializer(version().toUint64()) modifier after "version()" is checked,
|
|
115
|
-
function _updateVersionHistory(
|
|
116
|
-
address implementation,
|
|
117
|
-
address activatedBy
|
|
118
|
-
)
|
|
119
|
-
private
|
|
120
|
-
onlyInitializing
|
|
121
|
-
{
|
|
122
|
-
VersionableStorage storage $ = _getVersionableStorage();
|
|
123
|
-
|
|
124
|
-
uint64 version = _getInitializedVersion();
|
|
125
|
-
|
|
126
|
-
Version thisVersion = getVersion();
|
|
127
|
-
|
|
128
|
-
if(version == 1) {
|
|
129
|
-
// thisVersion is alias to version "1"
|
|
130
|
-
$._v1 = thisVersion;
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
require(thisVersion > $._v1, "INVALID VERSION");
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// update version history
|
|
137
|
-
$._versions.push(thisVersion);
|
|
138
|
-
$._versionHistory[thisVersion] = VersionInfo(
|
|
139
|
-
thisVersion,
|
|
140
|
-
implementation,
|
|
141
|
-
activatedBy,
|
|
142
|
-
TimestampLib.blockTimestamp(),
|
|
143
|
-
blockNumber()
|
|
144
|
-
);
|
|
145
|
-
|
|
146
|
-
emit LogVersionableInitialized(thisVersion, implementation, activatedBy);
|
|
147
|
-
}
|
|
148
59
|
}
|
|
@@ -16,7 +16,7 @@ contract TestService is Service {
|
|
|
16
16
|
constructor(address registry, NftId registryNftId, address initialOwner)
|
|
17
17
|
// solhint-disable-next-line no-empty-blocks
|
|
18
18
|
{
|
|
19
|
-
initializeService(registry, initialOwner);
|
|
19
|
+
initializeService(registry, address(0), initialOwner);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
function getDomain() public pure override returns(ObjectType) {
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import {UFixed, UFixedLib} from "./UFixed.sol";
|
|
5
|
+
|
|
6
|
+
type Amount is uint96;
|
|
7
|
+
|
|
8
|
+
using {
|
|
9
|
+
AmountLib.eqz,
|
|
10
|
+
AmountLib.gtz,
|
|
11
|
+
AmountLib.toInt,
|
|
12
|
+
AmountLib.add,
|
|
13
|
+
AmountLib.toUFixed
|
|
14
|
+
} for Amount global;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
library AmountLib {
|
|
18
|
+
|
|
19
|
+
error ErrorAmountLibValueTooBig(uint256 amount);
|
|
20
|
+
|
|
21
|
+
function zero() public pure returns (Amount) {
|
|
22
|
+
return Amount.wrap(0);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function max() public pure returns (Amount) {
|
|
26
|
+
return Amount.wrap(_max());
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/// @dev converts the uint amount into Amount
|
|
30
|
+
/// function reverts if value is exceeding max Amount value
|
|
31
|
+
function toAmount(uint256 amount) public pure returns (Amount) {
|
|
32
|
+
if(amount > _max()) {
|
|
33
|
+
revert ErrorAmountLibValueTooBig(amount);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return Amount.wrap(uint96(amount));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/// @dev return true if amount equals 0
|
|
40
|
+
function eqz(Amount amount) public pure returns (bool) {
|
|
41
|
+
return Amount.unwrap(amount) == 0;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/// @dev return true if amount1 equals amount2
|
|
45
|
+
function eq(Amount amount1, Amount amount2) public pure returns (bool) {
|
|
46
|
+
return Amount.unwrap(amount1) == Amount.unwrap(amount2);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/// @dev return true if amount is larger than 0
|
|
50
|
+
function gtz(Amount amount) public pure returns (bool) {
|
|
51
|
+
return Amount.unwrap(amount) > 0;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function add(Amount a1, Amount a2) public pure returns (Amount) {
|
|
55
|
+
return Amount.wrap(Amount.unwrap(a1) + Amount.unwrap(a2));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function toInt(Amount amount) public pure returns (uint256) {
|
|
59
|
+
return uint256(uint96(Amount.unwrap(amount)));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function toUFixed(Amount amount) public pure returns (UFixed) {
|
|
63
|
+
return UFixedLib.toUFixed(Amount.unwrap(amount));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function _max() internal pure returns (uint96) {
|
|
67
|
+
// IMPORTANT: type nees to match with actual definition for Amount
|
|
68
|
+
return type(uint96).max;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -52,6 +52,7 @@ function blockBlocknumber() view returns (Blocknumber) {
|
|
|
52
52
|
return toBlocknumber(block.number);
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
// TODO move to BlocknumberLib and rename to zero()
|
|
55
56
|
/// @dev Return the Blocknumber zero (0)
|
|
56
57
|
function zeroBlocknumber() pure returns (Blocknumber) {
|
|
57
58
|
return toBlocknumber(0);
|