@etherisc/gif-next 0.0.2-da0f894-204 → 0.0.2-db1e1e4-828
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 +68 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +64 -14
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +158 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +150 -10
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +184 -149
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +158 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +114 -189
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +68 -0
- 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 +127 -182
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +175 -51
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +215 -252
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +472 -126
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +102 -168
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +304 -171
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +71 -23
- 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 +85 -30
- 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 +145 -53
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +21 -13
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +384 -249
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +74 -14
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +104 -41
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +11 -7
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +356 -111
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +57 -45
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +101 -14
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +212 -186
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +80 -14
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +250 -18
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +106 -19
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +511 -14
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -14
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +152 -60
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +27 -19
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +561 -51
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +24 -12
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +114 -51
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +16 -12
- 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 +0 -24
- 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 +17 -36
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +7 -7
- 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 +2 -2
- 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/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- 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/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +80 -14
- 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 +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +86 -15
- 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/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 +2 -2
- 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 +101 -26
- 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 +2 -2
- 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 +161 -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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +2 -2
- 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 +42 -10
- package/contracts/components/Distribution.sol +0 -13
- package/contracts/components/IComponent.sol +9 -1
- package/contracts/components/IDistributionComponent.sol +0 -8
- package/contracts/components/IPoolComponent.sol +5 -43
- package/contracts/components/Pool.sol +47 -122
- package/contracts/components/Product.sol +4 -0
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/instance/BundleManager.sol +6 -4
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +16 -10
- package/contracts/instance/IInstanceService.sol +18 -5
- package/contracts/instance/Instance.sol +46 -9
- package/contracts/instance/InstanceAccessManager.sol +388 -158
- package/contracts/instance/InstanceReader.sol +8 -10
- package/contracts/instance/InstanceService.sol +184 -179
- package/contracts/instance/ObjectManager.sol +6 -8
- package/contracts/instance/base/ComponentService.sol +17 -30
- package/contracts/instance/base/KeyValueStore.sol +13 -5
- package/contracts/instance/base/Lifecycle.sol +11 -2
- package/contracts/instance/module/IAccess.sol +21 -14
- package/contracts/instance/module/IBundle.sol +6 -4
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/ISetup.sol +4 -17
- package/contracts/instance/service/ApplicationService.sol +22 -18
- package/contracts/instance/service/BundleService.sol +209 -77
- package/contracts/instance/service/ClaimService.sol +3 -3
- package/contracts/instance/service/DistributionService.sol +118 -77
- package/contracts/instance/service/IApplicationService.sol +1 -0
- package/contracts/instance/service/IBundleService.sol +63 -25
- package/contracts/instance/service/IDistributionService.sol +14 -1
- package/contracts/instance/service/IPolicyService.sol +2 -0
- package/contracts/instance/service/IPoolService.sol +82 -3
- package/contracts/instance/service/PolicyService.sol +96 -138
- package/contracts/instance/service/PoolService.sol +214 -20
- package/contracts/instance/service/ProductService.sol +30 -53
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +2 -0
- package/contracts/registry/IRegistryService.sol +4 -3
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +23 -20
- package/contracts/registry/RegistryService.sol +10 -11
- package/contracts/registry/ReleaseManager.sol +20 -18
- package/contracts/shared/IService.sol +4 -6
- package/contracts/shared/Service.sol +21 -7
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +60 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/Fee.sol +13 -5
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +1 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +6 -4
- package/contracts/types/StateId.sol +1 -0
- package/contracts/types/Timestamp.sol +1 -0
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +1 -1
@@ -6,7 +6,7 @@ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManage
|
|
6
6
|
import {NftId} from "../types/NftId.sol";
|
7
7
|
import {RoleId} from "../types/RoleId.sol";
|
8
8
|
import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../types/ObjectType.sol";
|
9
|
-
import {VersionPart, VersionPartLib} from "../types/Version.sol";
|
9
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../types/Version.sol";
|
10
10
|
import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
|
11
11
|
|
12
12
|
import {IService} from "../shared/IService.sol";
|
@@ -55,19 +55,19 @@ contract ReleaseManager is AccessManaged
|
|
55
55
|
RegistryAccessManager private immutable _accessManager;
|
56
56
|
IRegistry private immutable _registry;
|
57
57
|
|
58
|
-
VersionPart immutable _initial;// first active version
|
59
|
-
VersionPart _latest;// latest active version
|
60
|
-
VersionPart _next;// version to create and activate
|
58
|
+
VersionPart immutable _initial;// first active major version
|
59
|
+
VersionPart _latest;// latest active major version
|
60
|
+
VersionPart _next;// major version to create and activate
|
61
61
|
|
62
|
-
mapping(VersionPart
|
62
|
+
mapping(VersionPart majorVersion => IRegistry.ReleaseInfo info) _release;
|
63
63
|
|
64
|
-
mapping(VersionPart
|
64
|
+
mapping(VersionPart majorVersion => mapping(ObjectType serviceDomain => bytes4[])) _selectors; // registry service function selector assigned to domain
|
65
65
|
|
66
66
|
uint _awaitingRegistration; // "services left to register" counter
|
67
67
|
|
68
68
|
mapping(address registryService => bool isActive) _active;
|
69
69
|
|
70
|
-
mapping(VersionPart
|
70
|
+
mapping(VersionPart majorVersion => bool isValid) _valid; // TODO refactor to use _active only
|
71
71
|
|
72
72
|
constructor(
|
73
73
|
RegistryAccessManager accessManager,
|
@@ -146,12 +146,12 @@ contract ReleaseManager is AccessManaged
|
|
146
146
|
|
147
147
|
IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
|
148
148
|
|
149
|
-
VersionPart
|
149
|
+
VersionPart majorVersion = _next;
|
150
150
|
ObjectType domain = REGISTRY();
|
151
|
-
_verifyService(service,
|
151
|
+
_verifyService(service, majorVersion, domain);
|
152
152
|
_createRelease(service.getFunctionConfigs());
|
153
153
|
|
154
|
-
nftId = _registry.registerService(info,
|
154
|
+
nftId = _registry.registerService(info, majorVersion, domain);
|
155
155
|
|
156
156
|
// external call
|
157
157
|
service.linkToRegisteredNftId();
|
@@ -169,13 +169,13 @@ contract ReleaseManager is AccessManaged
|
|
169
169
|
}
|
170
170
|
|
171
171
|
IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
|
172
|
-
VersionPart
|
173
|
-
ObjectType domain = _release[
|
174
|
-
_verifyService(service,
|
172
|
+
VersionPart majorVersion = getNextVersion();
|
173
|
+
ObjectType domain = _release[majorVersion].domains[_awaitingRegistration];// reversed registration order of services specified in RegistryService config
|
174
|
+
_verifyService(service, majorVersion, domain);
|
175
175
|
|
176
176
|
// setup and grant unique role if service does registrations
|
177
|
-
bytes4[] memory selectors = _selectors[
|
178
|
-
address registryService = _registry.getServiceAddress(REGISTRY(),
|
177
|
+
bytes4[] memory selectors = _selectors[majorVersion][domain];
|
178
|
+
address registryService = _registry.getServiceAddress(REGISTRY(), majorVersion);
|
179
179
|
if(selectors.length > 0) {
|
180
180
|
_accessManager.setAndGrantUniqueRole(
|
181
181
|
address(service),
|
@@ -185,7 +185,7 @@ contract ReleaseManager is AccessManaged
|
|
185
185
|
|
186
186
|
_awaitingRegistration--;
|
187
187
|
|
188
|
-
nftId = _registry.registerService(info,
|
188
|
+
nftId = _registry.registerService(info, majorVersion, domain);
|
189
189
|
|
190
190
|
// external call
|
191
191
|
service.linkToRegisteredNftId();
|
@@ -271,8 +271,10 @@ contract ReleaseManager is AccessManaged
|
|
271
271
|
view
|
272
272
|
returns(ObjectType)
|
273
273
|
{
|
274
|
-
|
275
|
-
|
274
|
+
Version version = service.getVersion();
|
275
|
+
VersionPart majorVersion = version.toMajorPart();
|
276
|
+
if(majorVersion != expectedVersion) {
|
277
|
+
revert UnexpectedServiceVersion(expectedVersion, majorVersion);
|
276
278
|
}
|
277
279
|
|
278
280
|
if(service.getDomain() != expectedDomain) {
|
@@ -1,18 +1,16 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {ObjectType} from "../types/ObjectType.sol";
|
4
|
+
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
6
5
|
|
7
6
|
import {IRegisterable} from "./IRegisterable.sol";
|
8
7
|
import {IVersionable} from "./IVersionable.sol";
|
8
|
+
import {ObjectType} from "../types/ObjectType.sol";
|
9
9
|
|
10
10
|
interface IService is
|
11
11
|
IRegisterable,
|
12
|
-
IVersionable
|
12
|
+
IVersionable,
|
13
|
+
IAccessManaged
|
13
14
|
{
|
14
|
-
error ErrorIServiceCallerUnknown(address caller);
|
15
|
-
|
16
15
|
function getDomain() external pure returns(ObjectType serviceDomain);
|
17
|
-
function getMajorVersion() external view returns(VersionPart majorVersion);
|
18
16
|
}
|
@@ -1,7 +1,10 @@
|
|
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
9
|
import {Version, VersionPart, VersionLib, VersionPartLib} from "../types/Version.sol";
|
7
10
|
|
@@ -18,14 +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
|
-
function getMajorVersion() public view virtual override returns(VersionPart majorVersion) {
|
27
|
-
return VersionPartLib.toVersionPart(3);
|
28
|
-
}
|
28
|
+
uint8 private constant GIF_MAJOR_VERSION = 3;
|
29
29
|
|
30
30
|
// from Versionable
|
31
31
|
function getVersion()
|
@@ -34,11 +34,12 @@ abstract contract Service is
|
|
34
34
|
virtual override (IVersionable, Versionable)
|
35
35
|
returns(Version)
|
36
36
|
{
|
37
|
-
return VersionLib.toVersion(
|
37
|
+
return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
|
38
38
|
}
|
39
39
|
|
40
40
|
function initializeService(
|
41
41
|
address registry,
|
42
|
+
address authority, // real authority for registry service adress(0) for other services
|
42
43
|
address initialOwner
|
43
44
|
)
|
44
45
|
public
|
@@ -53,6 +54,19 @@ abstract contract Service is
|
|
53
54
|
initialOwner,
|
54
55
|
""); // data
|
55
56
|
|
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
|
+
}
|
68
|
+
|
69
|
+
registerInterface(type(IAccessManaged).interfaceId);
|
56
70
|
registerInterface(type(IService).interfaceId);
|
57
71
|
}
|
58
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
|
}
|
@@ -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,60 @@
|
|
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.toUFixed
|
13
|
+
} for Amount global;
|
14
|
+
|
15
|
+
|
16
|
+
library AmountLib {
|
17
|
+
|
18
|
+
error ErrorAmountLibValueTooBig(uint256 amount);
|
19
|
+
|
20
|
+
function zero() public pure returns (Amount) {
|
21
|
+
return Amount.wrap(0);
|
22
|
+
}
|
23
|
+
|
24
|
+
function max() public pure returns (Amount) {
|
25
|
+
return Amount.wrap(_max());
|
26
|
+
}
|
27
|
+
|
28
|
+
/// @dev converts the uint amount into Amount
|
29
|
+
/// function reverts if value is exceeding max Amount value
|
30
|
+
function toAmount(uint256 amount) public pure returns (Amount) {
|
31
|
+
if(amount > _max()) {
|
32
|
+
revert ErrorAmountLibValueTooBig(amount);
|
33
|
+
}
|
34
|
+
|
35
|
+
return Amount.wrap(uint96(amount));
|
36
|
+
}
|
37
|
+
|
38
|
+
/// @dev return true if amount equals 0
|
39
|
+
function eqz(Amount amount) public pure returns (bool) {
|
40
|
+
return Amount.unwrap(amount) == 0;
|
41
|
+
}
|
42
|
+
|
43
|
+
/// @dev return true if amount is larger than 0
|
44
|
+
function gtz(Amount amount) public pure returns (bool) {
|
45
|
+
return Amount.unwrap(amount) > 0;
|
46
|
+
}
|
47
|
+
|
48
|
+
function toInt(Amount amount) public pure returns (uint256) {
|
49
|
+
return uint256(uint96(Amount.unwrap(amount)));
|
50
|
+
}
|
51
|
+
|
52
|
+
function toUFixed(Amount amount) public pure returns (UFixed) {
|
53
|
+
return UFixedLib.toUFixed(Amount.unwrap(amount));
|
54
|
+
}
|
55
|
+
|
56
|
+
function _max() internal pure returns (uint96) {
|
57
|
+
// IMPORTANT: type nees to match with actual definition for Amount
|
58
|
+
return type(uint96).max;
|
59
|
+
}
|
60
|
+
}
|
@@ -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);
|
package/contracts/types/Fee.sol
CHANGED
@@ -21,10 +21,13 @@ library FeeLib {
|
|
21
21
|
uint256 netAmount
|
22
22
|
)
|
23
23
|
{
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
netAmount = amount;
|
25
|
+
if(gtz(fee)) {
|
26
|
+
UFixed fractionalAmount =
|
27
|
+
UFixedLib.toUFixed(amount) * fee.fractionalFee;
|
28
|
+
feeAmount = fractionalAmount.toInt() + fee.fixedFee;
|
29
|
+
netAmount -= feeAmount;
|
30
|
+
}
|
28
31
|
}
|
29
32
|
|
30
33
|
/// @dev Converts the uint256 to a fee struct.
|
@@ -40,6 +43,7 @@ library FeeLib {
|
|
40
43
|
return Fee(UFixedLib.toUFixed(percent, -2), 0);
|
41
44
|
}
|
42
45
|
|
46
|
+
// TODO rename to zero
|
43
47
|
/// @dev Return a zero fee struct (0, 0)
|
44
48
|
function zeroFee() public pure returns (Fee memory fee) {
|
45
49
|
return Fee(UFixed.wrap(0), 0);
|
@@ -50,7 +54,11 @@ library FeeLib {
|
|
50
54
|
return a.fixedFee == b.fixedFee && a.fractionalFee == b.fractionalFee;
|
51
55
|
}
|
52
56
|
|
53
|
-
function
|
57
|
+
function gtz(Fee memory fee) public pure returns (bool) {
|
58
|
+
return UFixed.unwrap(fee.fractionalFee) > 0 || fee.fixedFee > 0;
|
59
|
+
}
|
60
|
+
|
61
|
+
function eqz(Fee memory fee) public pure returns (bool) {
|
54
62
|
return fee.fixedFee == 0 && UFixed.unwrap(fee.fractionalFee) == 0;
|
55
63
|
}
|
56
64
|
}
|
@@ -24,6 +24,7 @@ function toNftId(uint256 id) pure returns (NftId) {
|
|
24
24
|
return NftId.wrap(uint96(id));
|
25
25
|
}
|
26
26
|
|
27
|
+
// TODO move to NftIdLib and rename to zero()
|
27
28
|
/// @dev Return the NftId zero (0)
|
28
29
|
function zeroNftId() pure returns (NftId) {
|
29
30
|
return NftId.wrap(0);
|
@@ -40,6 +41,13 @@ function neNftId(NftId a, NftId b) pure returns (bool isDifferent) {
|
|
40
41
|
|
41
42
|
// library functions that operate on user defined type
|
42
43
|
library NftIdLib {
|
44
|
+
|
45
|
+
/// @dev the zero nft id
|
46
|
+
/// is never a valid nft id and implies a non-initialized value
|
47
|
+
function zero() public pure returns (NftId) {
|
48
|
+
return NftId.wrap(0);
|
49
|
+
}
|
50
|
+
|
43
51
|
/// @dev Converts the NftId to a uint256.
|
44
52
|
function toInt(NftId nftId) public pure returns (uint96) {
|
45
53
|
return uint96(NftId.unwrap(nftId));
|
@@ -115,6 +115,7 @@ function toObjectType(uint256 objectType) pure returns (ObjectType) {
|
|
115
115
|
return ObjectType.wrap(uint8(objectType));
|
116
116
|
}
|
117
117
|
|
118
|
+
// TODO move to ObjecTypeLib and rename to zero()
|
118
119
|
/// @dev Return the ObjectType zero (0)
|
119
120
|
function zeroObjectType() pure returns (ObjectType) {
|
120
121
|
return ObjectType.wrap(0);
|
@@ -29,11 +29,12 @@ function ORACLE_OWNER_ROLE_NAME() pure returns (string memory) { return "OracleO
|
|
29
29
|
function POOL_OWNER_ROLE_NAME() pure returns (string memory) { return "PoolOwnerRole"; }
|
30
30
|
function PRODUCT_OWNER_ROLE_NAME() pure returns (string memory) { return "ProductOwnerRole"; }
|
31
31
|
|
32
|
-
function DISTRIBUTION_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(
|
33
|
-
function ORACLE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(
|
34
|
-
function POOL_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(
|
35
|
-
function PRODUCT_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(
|
32
|
+
function DISTRIBUTION_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2); }
|
33
|
+
function ORACLE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(3); }
|
34
|
+
function POOL_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(4); }
|
35
|
+
function PRODUCT_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(5); }
|
36
36
|
|
37
|
+
function INSTANCE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1900); }
|
37
38
|
function INSTANCE_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2000); }
|
38
39
|
function DISTRIBUTION_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2100); }
|
39
40
|
function POOL_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2200); }
|
@@ -42,6 +43,7 @@ function APPLICATION_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toR
|
|
42
43
|
function POLICY_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2410); }
|
43
44
|
function CLAIM_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2420); }
|
44
45
|
function BUNDLE_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2500); }
|
46
|
+
function INSTANCE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2600); }
|
45
47
|
|
46
48
|
function GIF_ADMIN_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1500); }
|
47
49
|
function GIF_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1600); }
|
@@ -67,6 +67,7 @@ function toStateId(uint256 id) pure returns (StateId) {
|
|
67
67
|
return StateId.wrap(uint8(id));
|
68
68
|
}
|
69
69
|
|
70
|
+
// TODO move to StateIdLib and rename to zero()
|
70
71
|
/// @dev Return the StateId zero (0)
|
71
72
|
function zeroStateId() pure returns (StateId) {
|
72
73
|
return StateId.wrap(0);
|
@@ -53,6 +53,7 @@ function toTimestamp(uint256 timestamp) pure returns (Timestamp) {
|
|
53
53
|
return Timestamp.wrap(uint40(timestamp));
|
54
54
|
}
|
55
55
|
|
56
|
+
// TODO move to TimestampLib and rename to zero()
|
56
57
|
/// @dev Return the Timestamp zero (0)
|
57
58
|
function zeroTimestamp() pure returns (Timestamp) {
|
58
59
|
return toTimestamp(0);
|
package/package.json
CHANGED