@etherisc/gif-next 0.0.2-e922e07-736 → 0.0.2-e9a637d-547
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 +0 -71
- 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 +68 -0
- 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 +158 -0
- 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 +214 -2063
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +196 -51
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +363 -2832
- 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/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +101 -167
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +333 -171
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -23
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2677 -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 +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 +124 -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 +195 -121
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +51 -47
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +80 -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 +101 -24
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +90 -24
- 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 +136 -65
- 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 +2 -2
- 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/IComponent.sol +9 -1
- 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 +23 -55
- package/contracts/instance/IInstanceService.sol +31 -6
- package/contracts/instance/Instance.sol +90 -182
- package/contracts/instance/InstanceAccessManager.sol +402 -159
- package/contracts/instance/InstanceReader.sol +12 -12
- package/contracts/instance/InstanceService.sol +287 -246
- package/contracts/instance/InstanceStore.sol +219 -0
- 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 +3 -16
- package/contracts/instance/service/ApplicationService.sol +18 -16
- package/contracts/instance/service/BundleService.sol +213 -81
- package/contracts/instance/service/ClaimService.sol +3 -3
- package/contracts/instance/service/DistributionService.sol +57 -70
- package/contracts/instance/service/IBundleService.sol +63 -25
- package/contracts/instance/service/IDistributionService.sol +1 -0
- package/contracts/instance/service/IPoolService.sol +82 -3
- package/contracts/instance/service/PolicyService.sol +68 -100
- package/contracts/instance/service/PoolService.sol +214 -20
- package/contracts/instance/service/ProductService.sol +34 -58
- 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/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
@@ -22,9 +22,10 @@ contract BundleManager is
|
|
22
22
|
event LogBundleManagerBundleAdded(NftId poolNftId, NftId bundleNftId);
|
23
23
|
event LogBundleManagerBundleUnlocked(NftId poolNftId, NftId bundleNftId);
|
24
24
|
event LogBundleManagerBundleLocked(NftId poolNftId, NftId bundleNftId);
|
25
|
+
event LogBundleManagerBundleClosed(NftId poolNftId, NftId bundleNftId);
|
25
26
|
|
26
|
-
error
|
27
|
-
error
|
27
|
+
error ErrorBundleManagerPolicyAlreadyActivated(NftId policyNftId);
|
28
|
+
error ErrorBundleManagerBundleLocked(NftId bundleNftId, NftId policyNftId);
|
28
29
|
error ErrorBundleManagerPolicyWithOpenClaims(NftId policyNftId, uint256 openClaimsCount);
|
29
30
|
error ErrorBundleManagerPolicyNotCloseable(NftId policyNftId);
|
30
31
|
error ErrorBundleManagerBundleUnknown(NftId bundleNftId);
|
@@ -32,7 +33,7 @@ contract BundleManager is
|
|
32
33
|
|
33
34
|
mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
|
34
35
|
|
35
|
-
/// @dev links a policy
|
36
|
+
/// @dev links a policy to its bundle
|
36
37
|
// to link a policy it MUST NOT yet have been activated
|
37
38
|
// the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
|
38
39
|
function linkPolicy(NftId policyNftId) external restricted() {
|
@@ -42,7 +43,7 @@ contract BundleManager is
|
|
42
43
|
|
43
44
|
// ensure bundle is unlocked (in active set) and registered with this instance
|
44
45
|
if (!_isActive(poolNftId, bundleNftId)) {
|
45
|
-
revert
|
46
|
+
revert ErrorBundleManagerBundleLocked(bundleNftId, policyNftId);
|
46
47
|
}
|
47
48
|
|
48
49
|
LibNftIdSet.add(_activePolicies[bundleNftId], policyNftId);
|
@@ -85,6 +86,7 @@ contract BundleManager is
|
|
85
86
|
emit LogBundleManagerBundleAdded(poolNftId, bundleNftId);
|
86
87
|
}
|
87
88
|
|
89
|
+
|
88
90
|
/// @dev unlocked (active) bundles are available to underwrite new policies
|
89
91
|
function unlock(NftId bundleNftId) external restricted() {
|
90
92
|
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
@@ -10,7 +10,8 @@ abstract contract Cloneable is
|
|
10
10
|
AccessManagedUpgradeable
|
11
11
|
{
|
12
12
|
event CloneableInitialized(address authority, address registry);
|
13
|
-
|
13
|
+
|
14
|
+
error CloneableAuthorityZero();
|
14
15
|
error CloneableRegistryInvalid(address registry);
|
15
16
|
|
16
17
|
IRegistry internal _registry;
|
@@ -25,9 +26,13 @@ abstract contract Cloneable is
|
|
25
26
|
address registry
|
26
27
|
)
|
27
28
|
public
|
28
|
-
|
29
|
+
onlyInitializing
|
29
30
|
{
|
30
31
|
// check/handle access managed
|
32
|
+
if(authority == address(0)) {
|
33
|
+
revert CloneableAuthorityZero();
|
34
|
+
}
|
35
|
+
|
31
36
|
__AccessManaged_init(authority);
|
32
37
|
|
33
38
|
// check/handle registry
|
@@ -6,37 +6,45 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
|
|
6
6
|
import {NftId} from "../types/NftId.sol";
|
7
7
|
import {StateId} from "../types/StateId.sol";
|
8
8
|
import {RiskId} from "../types/RiskId.sol";
|
9
|
+
import {VersionPart} from "../types/Version.sol";
|
10
|
+
import {Key32} from "../types/Key32.sol";
|
11
|
+
import {RoleId} from "../types/RoleId.sol";
|
9
12
|
|
10
13
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
11
14
|
|
15
|
+
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
16
|
+
|
12
17
|
import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
13
18
|
import {BundleManager} from "./BundleManager.sol";
|
14
19
|
import {InstanceReader} from "./InstanceReader.sol";
|
20
|
+
import {InstanceStore} from "./InstanceStore.sol";
|
21
|
+
|
22
|
+
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
23
|
+
|
24
|
+
import {IAccess} from "./module/IAccess.sol";
|
15
25
|
|
16
|
-
import {IBundle} from "./module/IBundle.sol";
|
17
26
|
import {IBundleService} from "./service/IBundleService.sol";
|
18
27
|
import {IDistributionService} from "./service/IDistributionService.sol";
|
19
|
-
import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
20
|
-
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
21
|
-
import {IPolicy} from "./module/IPolicy.sol";
|
22
|
-
import {IDistribution} from "./module/IDistribution.sol";
|
23
28
|
import {IPolicyService} from "./service/IPolicyService.sol";
|
24
29
|
import {IPoolService} from "./service/IPoolService.sol";
|
25
30
|
import {IProductService} from "./service/IProductService.sol";
|
26
31
|
import {IPolicyService} from "./service/IPolicyService.sol";
|
27
32
|
import {IBundleService} from "./service/IBundleService.sol";
|
28
|
-
import {IRisk} from "./module/IRisk.sol";
|
29
|
-
import {ISetup} from "./module/ISetup.sol";
|
30
|
-
import {NftId} from "../types/NftId.sol";
|
31
|
-
import {RiskId} from "../types/RiskId.sol";
|
32
|
-
import {StateId} from "../types/StateId.sol";
|
33
|
-
import {VersionPart} from "../types/Version.sol";
|
34
|
-
import {Key32} from "../types/Key32.sol";
|
35
33
|
|
36
34
|
|
37
35
|
|
36
|
+
interface IInstance is
|
37
|
+
IRegisterable,
|
38
|
+
ITransferInterceptor,
|
39
|
+
IAccessManaged
|
40
|
+
{
|
41
|
+
function createRole(string memory roleName, string memory adminName) external returns (RoleId roleId, RoleId admin);
|
42
|
+
function grantRole(RoleId roleId, address account) external;
|
43
|
+
function revokeRole(RoleId roleId, address account) external;
|
38
44
|
|
39
|
-
|
45
|
+
function createTarget(address target, string memory name) external;
|
46
|
+
function setTargetFunctionRole(string memory targetName, bytes4[] calldata selectors, RoleId roleId) external;
|
47
|
+
function setTargetLocked(address target, bool locked) external;
|
40
48
|
|
41
49
|
function getDistributionService() external view returns (IDistributionService);
|
42
50
|
function getProductService() external view returns (IProductService);
|
@@ -44,49 +52,9 @@ interface IInstance is IRegisterable, IKeyValueStore, IAccessManaged {
|
|
44
52
|
function getPolicyService() external view returns (IPolicyService);
|
45
53
|
function getBundleService() external view returns (IBundleService);
|
46
54
|
|
47
|
-
function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external;
|
48
|
-
function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external;
|
49
|
-
function updateDistributionSetupState(NftId distributionNftId, StateId newState) external;
|
50
|
-
|
51
|
-
function createPoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup) external;
|
52
|
-
function updatePoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup, StateId newState) external;
|
53
|
-
function updatePoolSetupState(NftId poolNftId, StateId newState) external;
|
54
|
-
|
55
|
-
function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external;
|
56
|
-
function updateBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle, StateId newState) external;
|
57
|
-
function updateBundleState(NftId bundleNftId, StateId newState) external;
|
58
|
-
|
59
|
-
function createProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup) external;
|
60
|
-
function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external;
|
61
|
-
function updateProductSetupState(NftId productNftId, StateId newState) external;
|
62
|
-
|
63
|
-
function createDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info) external;
|
64
|
-
function updateDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info, StateId newState) external;
|
65
|
-
function updateDistributorTypeState(Key32 distributorKey, StateId newState) external;
|
66
|
-
|
67
|
-
function createDistributor(NftId nftId, IDistribution.DistributorInfo memory info) external;
|
68
|
-
function updateDistributor(NftId nftId, IDistribution.DistributorInfo memory info, StateId newState) external;
|
69
|
-
function updateDistributorState(NftId nftId, StateId newState) external;
|
70
|
-
|
71
|
-
function createReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo) external;
|
72
|
-
function updateReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo, StateId newState) external;
|
73
|
-
function updateReferralState(Key32 referralKey, StateId newState) external;
|
74
|
-
|
75
|
-
function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external;
|
76
|
-
function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external;
|
77
|
-
function updateRiskState(RiskId riskId, StateId newState) external;
|
78
|
-
|
79
|
-
function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external;
|
80
|
-
function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
|
81
|
-
function updateApplicationState(NftId applicationNftId, StateId newState) external;
|
82
|
-
|
83
|
-
function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
|
84
|
-
function updatePolicyState(NftId policyNftId, StateId newState) external;
|
85
|
-
|
86
|
-
// TODO add claims/payouts function to instance
|
87
|
-
// function updateClaims(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
|
88
|
-
|
89
55
|
function getMajorVersion() external pure returns (VersionPart majorVersion);
|
90
56
|
function getInstanceReader() external view returns (InstanceReader);
|
91
57
|
function getBundleManager() external view returns (BundleManager);
|
58
|
+
function getInstanceAccessManager() external view returns (InstanceAccessManager);
|
59
|
+
function getInstanceStore() external view returns (InstanceStore);
|
92
60
|
}
|
@@ -10,14 +10,17 @@ import {IRegistry} from "../registry/IRegistry.sol";
|
|
10
10
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
11
11
|
import {IComponent} from "../components/IComponent.sol";
|
12
12
|
|
13
|
+
import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
|
13
14
|
import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
14
15
|
import {Instance} from "./Instance.sol";
|
15
16
|
import {InstanceReader} from "./InstanceReader.sol";
|
16
17
|
import {BundleManager} from "./BundleManager.sol";
|
18
|
+
import {InstanceStore} from "./InstanceStore.sol";
|
17
19
|
|
18
20
|
interface IInstanceService is IService {
|
19
21
|
|
20
22
|
error ErrorInstanceServiceMasterInstanceAlreadySet();
|
23
|
+
error ErrorInstanceServiceMasterOzAccessManagerAlreadySet();
|
21
24
|
error ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet();
|
22
25
|
error ErrorInstanceServiceMasterBundleManagerAlreadySet();
|
23
26
|
error ErrorInstanceServiceInstanceAddressZero();
|
@@ -27,33 +30,55 @@ interface IInstanceService is IService {
|
|
27
30
|
error ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader();
|
28
31
|
error ErrorInstanceServiceInstanceReaderInstanceMismatch();
|
29
32
|
|
30
|
-
error
|
33
|
+
error ErrorInstanceServiceOzAccessManagerZero();
|
34
|
+
error ErrorInstanceServiceInstanceAccessManagerZero();
|
31
35
|
error ErrorInstanceServiceInstanceReaderZero();
|
32
36
|
error ErrorInstanceServiceBundleManagerZero();
|
37
|
+
error ErrorInstanceServiceInstanceStoreZero();
|
33
38
|
|
34
39
|
error ErrorInstanceServiceInstanceAuthorityMismatch();
|
40
|
+
error ErrorInstanceServiceBundleManagerAuthorityMismatch();
|
35
41
|
error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
|
36
42
|
error ErrorInstanceServiceBundleMangerInstanceMismatch();
|
43
|
+
error ErrorInstanceServiceInstanceStoreAuthorityMismatch();
|
37
44
|
|
38
45
|
error ErrorInstanceServiceRequestUnauhorized(address caller);
|
39
46
|
error ErrorInstanceServiceNotInstanceOwner(address caller, NftId instanceNftId);
|
47
|
+
error ErrorInstanceServiceNotInstance(NftId nftId);
|
40
48
|
error ErrorInstanceServiceComponentNotRegistered(address componentAddress);
|
49
|
+
error ErrorInstanceServiceInstanceComponentMismatch(NftId instanceNftId, NftId componentNftId);
|
41
50
|
error ErrorInstanceServiceInvalidComponentType(address componentAddress, ObjectType expectedType, ObjectType componentType);
|
42
51
|
|
43
|
-
event LogInstanceCloned(
|
52
|
+
event LogInstanceCloned(
|
53
|
+
address clonedOzAccessManager,
|
54
|
+
address clonedInstanceAccessManager,
|
55
|
+
address clonedInstance,
|
56
|
+
address clonedInstanceStore,
|
57
|
+
address clonedBundleManager,
|
58
|
+
address clonedInstanceReader,
|
59
|
+
NftId clonedInstanceNftId
|
60
|
+
);
|
44
61
|
|
45
62
|
function createInstanceClone()
|
46
63
|
external
|
47
64
|
returns (
|
48
|
-
|
65
|
+
AccessManagerUpgradeableInitializeable clonedOzAccessManager,
|
66
|
+
InstanceAccessManager clonedInstanceAccessManager,
|
49
67
|
Instance clonedInstance,
|
50
68
|
NftId instanceNftId,
|
51
69
|
InstanceReader clonedInstanceReader,
|
52
|
-
BundleManager clonedBundleManager
|
70
|
+
BundleManager clonedBundleManager,
|
71
|
+
InstanceStore clonedInstanceStore
|
53
72
|
);
|
54
73
|
|
55
|
-
function
|
56
|
-
|
74
|
+
function createGifTarget(
|
75
|
+
NftId instanceNftId,
|
76
|
+
address targetAddress,
|
77
|
+
string memory targetName,
|
78
|
+
bytes4[][] memory selectors,
|
79
|
+
RoleId[] memory roles
|
80
|
+
) external;
|
57
81
|
|
82
|
+
function setComponentLocked(bool locked) external;
|
58
83
|
}
|
59
84
|
|
@@ -3,29 +3,28 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
5
|
|
6
|
-
import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
|
7
6
|
import {NftId} from "../types/NftId.sol";
|
8
|
-
import {ClaimId} from "../types/ClaimId.sol";
|
9
|
-
import {NumberId} from "../types/NumberId.sol";
|
10
7
|
import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../types/ObjectType.sol";
|
11
|
-
import {
|
12
|
-
import {
|
13
|
-
import {StateId, ACTIVE} from "../types/StateId.sol";
|
14
|
-
import {TimestampLib} from "../types/Timestamp.sol";
|
15
|
-
import {VersionPart} from "../types/Version.sol";
|
8
|
+
import {RoleId, RoleIdLib, eqRoleId, ADMIN_ROLE, INSTANCE_ROLE, INSTANCE_OWNER_ROLE} from "../types/RoleId.sol";
|
9
|
+
import {VersionPart, VersionPartLib} from "../types/Version.sol";
|
16
10
|
|
17
11
|
import {ERC165} from "../shared/ERC165.sol";
|
18
12
|
import {Registerable} from "../shared/Registerable.sol";
|
13
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
14
|
+
|
15
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
19
16
|
|
20
17
|
import {IInstance} from "./IInstance.sol";
|
21
18
|
import {InstanceReader} from "./InstanceReader.sol";
|
22
19
|
import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
23
20
|
import {BundleManager} from "./BundleManager.sol";
|
21
|
+
import {InstanceStore} from "./InstanceStore.sol";
|
24
22
|
|
25
23
|
import {KeyValueStore} from "./base/KeyValueStore.sol";
|
26
24
|
|
27
25
|
import {IAccess} from "./module/IAccess.sol";
|
28
26
|
import {IBundle} from "./module/IBundle.sol";
|
27
|
+
import {IComponents} from "./module/IComponents.sol";
|
29
28
|
import {IDistribution} from "./module/IDistribution.sol";
|
30
29
|
import {IPolicy} from "./module/IPolicy.sol";
|
31
30
|
import {IRisk} from "./module/IRisk.sol";
|
@@ -36,216 +35,102 @@ import {IPoolService} from "./service/IPoolService.sol";
|
|
36
35
|
import {IProductService} from "./service/IProductService.sol";
|
37
36
|
import {IPolicyService} from "./service/IPolicyService.sol";
|
38
37
|
import {IBundleService} from "./service/IBundleService.sol";
|
39
|
-
import {VersionPart, VersionPartLib} from "../types/Version.sol";
|
40
38
|
|
41
39
|
contract Instance is
|
42
40
|
IInstance,
|
43
41
|
AccessManagedUpgradeable,
|
44
|
-
Registerable
|
45
|
-
KeyValueStore
|
42
|
+
Registerable
|
46
43
|
{
|
47
|
-
|
48
44
|
uint256 public constant GIF_MAJOR_VERSION = 3;
|
49
45
|
|
50
|
-
uint64 public constant ADMIN_ROLE = type(uint64).min;
|
51
|
-
uint64 public constant PUBLIC_ROLE = type(uint64).max;
|
52
|
-
uint64 public constant CUSTOM_ROLE_ID_MIN = 10000;
|
53
|
-
|
54
|
-
uint32 public constant EXECUTION_DELAY = 0;
|
55
|
-
|
56
46
|
bool private _initialized;
|
57
47
|
|
58
48
|
InstanceAccessManager internal _accessManager;
|
59
49
|
InstanceReader internal _instanceReader;
|
60
50
|
BundleManager internal _bundleManager;
|
51
|
+
InstanceStore internal _instanceStore;
|
61
52
|
|
62
|
-
|
63
|
-
|
53
|
+
modifier onlyChainNft() {
|
54
|
+
if(msg.sender != getRegistry().getChainNftAddress()) {
|
55
|
+
revert();
|
56
|
+
}
|
57
|
+
_;
|
58
|
+
}
|
59
|
+
|
60
|
+
function initialize(address authority, address registryAddress, address initialOwner)
|
61
|
+
external
|
64
62
|
initializer()
|
65
63
|
{
|
66
|
-
__AccessManaged_init(
|
64
|
+
__AccessManaged_init(authority);
|
67
65
|
|
68
|
-
|
69
|
-
|
70
|
-
}
|
71
|
-
|
72
|
-
//--- ProductSetup ------------------------------------------------------//
|
73
|
-
function createProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup) external restricted() {
|
74
|
-
create(_toNftKey32(productNftId, PRODUCT()), abi.encode(setup));
|
75
|
-
}
|
76
|
-
|
77
|
-
function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external restricted() {
|
78
|
-
update(_toNftKey32(productNftId, PRODUCT()), abi.encode(setup), newState);
|
79
|
-
}
|
80
|
-
|
81
|
-
function updateProductSetupState(NftId productNftId, StateId newState) external restricted() {
|
82
|
-
updateState(_toNftKey32(productNftId, PRODUCT()), newState);
|
83
|
-
}
|
84
|
-
|
85
|
-
//--- DistributionSetup ------------------------------------------------------//
|
86
|
-
function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external restricted() {
|
87
|
-
create(_toNftKey32(distributionNftId, DISTRIBUTION()), abi.encode(setup));
|
88
|
-
}
|
89
|
-
|
90
|
-
function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external restricted() {
|
91
|
-
update(_toNftKey32(distributionNftId, DISTRIBUTION()), abi.encode(setup), newState);
|
92
|
-
}
|
93
|
-
|
94
|
-
function updateDistributionSetupState(NftId distributionNftId, StateId newState) external restricted() {
|
95
|
-
updateState(_toNftKey32(distributionNftId, DISTRIBUTION()), newState);
|
96
|
-
}
|
97
|
-
|
98
|
-
//--- PoolSetup ------------------------------------------------------//
|
99
|
-
function createPoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup) external restricted() {
|
100
|
-
create(_toNftKey32(poolNftId, POOL()), abi.encode(setup));
|
101
|
-
}
|
102
|
-
|
103
|
-
function updatePoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup, StateId newState) external restricted() {
|
104
|
-
update(_toNftKey32(poolNftId, POOL()), abi.encode(setup), newState);
|
105
|
-
}
|
106
|
-
|
107
|
-
function updatePoolSetupState(NftId poolNftId, StateId newState) external restricted() {
|
108
|
-
updateState(_toNftKey32(poolNftId, POOL()), newState);
|
109
|
-
}
|
110
|
-
|
111
|
-
//--- DistributorType -------------------------------------------------------//
|
112
|
-
function createDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info) external restricted() {
|
113
|
-
create(distributorKey, abi.encode(info));
|
114
|
-
}
|
115
|
-
|
116
|
-
function updateDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info, StateId newState) external restricted() {
|
117
|
-
update(distributorKey, abi.encode(info), newState);
|
118
|
-
}
|
119
|
-
|
120
|
-
function updateDistributorTypeState(Key32 distributorKey, StateId newState) external restricted() {
|
121
|
-
updateState(distributorKey, newState);
|
122
|
-
}
|
123
|
-
|
124
|
-
//--- Distributor -------------------------------------------------------//
|
125
|
-
function createDistributor(NftId nftId, IDistribution.DistributorInfo memory info) external restricted() {
|
126
|
-
create(toDistributorKey32(nftId), abi.encode(info));
|
127
|
-
}
|
128
|
-
|
129
|
-
function updateDistributor(NftId nftId, IDistribution.DistributorInfo memory info, StateId newState) external restricted() {
|
130
|
-
update(toDistributorKey32(nftId), abi.encode(info), newState);
|
131
|
-
}
|
132
|
-
|
133
|
-
function updateDistributorState(NftId nftId, StateId newState) external restricted() {
|
134
|
-
updateState(toDistributorKey32(nftId), newState);
|
135
|
-
}
|
136
|
-
|
137
|
-
//--- Referral ----------------------------------------------------------//
|
138
|
-
function createReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo) external restricted() {
|
139
|
-
create(referralKey, abi.encode(referralInfo));
|
140
|
-
}
|
141
|
-
|
142
|
-
function updateReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo, StateId newState) external restricted() {
|
143
|
-
update(referralKey, abi.encode(referralInfo), newState);
|
144
|
-
}
|
145
|
-
|
146
|
-
function updateReferralState(Key32 referralKey, StateId newState) external restricted() {
|
147
|
-
updateState(referralKey, newState);
|
148
|
-
}
|
149
|
-
|
150
|
-
//--- Bundle ------------------------------------------------------------//
|
151
|
-
function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external restricted() {
|
152
|
-
create(toBundleKey32(bundleNftId), abi.encode(bundle));
|
153
|
-
}
|
154
|
-
|
155
|
-
function updateBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle, StateId newState) external restricted() {
|
156
|
-
update(toBundleKey32(bundleNftId), abi.encode(bundle), newState);
|
157
|
-
}
|
158
|
-
|
159
|
-
function updateBundleState(NftId bundleNftId, StateId newState) external restricted() {
|
160
|
-
updateState(toBundleKey32(bundleNftId), newState);
|
161
|
-
}
|
162
|
-
|
163
|
-
//--- Risk --------------------------------------------------------------//
|
164
|
-
function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external restricted() {
|
165
|
-
create(riskId.toKey32(), abi.encode(risk));
|
166
|
-
}
|
167
|
-
|
168
|
-
function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external restricted() {
|
169
|
-
update(riskId.toKey32(), abi.encode(risk), newState);
|
170
|
-
}
|
171
|
-
|
172
|
-
function updateRiskState(RiskId riskId, StateId newState) external restricted() {
|
173
|
-
updateState(riskId.toKey32(), newState);
|
174
|
-
}
|
175
|
-
|
176
|
-
//--- Application (Policy) ----------------------------------------------//
|
177
|
-
function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external restricted() {
|
178
|
-
create(toPolicyKey32(applicationNftId), abi.encode(policy));
|
179
|
-
}
|
180
|
-
|
181
|
-
function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
|
182
|
-
update(toPolicyKey32(applicationNftId), abi.encode(policy), newState);
|
183
|
-
}
|
184
|
-
|
185
|
-
function updateApplicationState(NftId applicationNftId, StateId newState) external restricted() {
|
186
|
-
updateState(toPolicyKey32(applicationNftId), newState);
|
187
|
-
}
|
188
|
-
|
189
|
-
//--- Policy ------------------------------------------------------------//
|
190
|
-
function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
|
191
|
-
update(toPolicyKey32(policyNftId), abi.encode(policy), newState);
|
192
|
-
}
|
193
|
-
|
194
|
-
function updatePolicyState(NftId policyNftId, StateId newState) external restricted() {
|
195
|
-
updateState(toPolicyKey32(policyNftId), newState);
|
196
|
-
}
|
66
|
+
IRegistry registry = IRegistry(registryAddress);
|
67
|
+
initializeRegisterable(registryAddress, registry.getNftId(), INSTANCE(), true, initialOwner, "");
|
197
68
|
|
198
|
-
|
199
|
-
function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
|
200
|
-
create(toPolicyKey32(policyNftId), abi.encode(claim));
|
69
|
+
registerInterface(type(IInstance).interfaceId);
|
201
70
|
}
|
202
71
|
|
203
|
-
|
204
|
-
update(toPolicyKey32(policyNftId), abi.encode(claim), newState);
|
205
|
-
}
|
72
|
+
//--- Roles ------------------------------------------------------------//
|
206
73
|
|
207
|
-
function
|
208
|
-
|
74
|
+
function createRole(string memory roleName, string memory adminName)
|
75
|
+
external
|
76
|
+
restricted // INSTANCE_OWNER_ROLE
|
77
|
+
returns (RoleId roleId, RoleId admin)
|
78
|
+
{
|
79
|
+
(roleId, admin) = _accessManager.createRole(roleName, adminName);
|
209
80
|
}
|
210
81
|
|
211
|
-
|
212
|
-
|
213
|
-
|
82
|
+
function grantRole(RoleId roleId, address account)
|
83
|
+
external
|
84
|
+
restricted // INSTANCE_OWNER_ROLE
|
85
|
+
{
|
86
|
+
_accessManager.grantRole(roleId, account);
|
214
87
|
}
|
215
88
|
|
216
|
-
function
|
217
|
-
|
89
|
+
function revokeRole(RoleId roleId, address account)
|
90
|
+
external
|
91
|
+
restricted // INSTANCE_OWNER_ROLE
|
92
|
+
{
|
93
|
+
_accessManager.revokeRole(roleId, account);
|
218
94
|
}
|
219
95
|
|
220
|
-
|
221
|
-
updateState(toPolicyKey32(policyNftId), newState);
|
222
|
-
}
|
96
|
+
//--- Targets ------------------------------------------------------------//
|
223
97
|
|
224
|
-
|
225
|
-
|
226
|
-
|
98
|
+
function createTarget(address target, string memory name)
|
99
|
+
external
|
100
|
+
restricted // INSTANCE_OWNER_ROLE
|
101
|
+
{
|
102
|
+
_accessManager.createTarget(target, name);
|
227
103
|
}
|
228
104
|
|
229
|
-
function
|
230
|
-
|
105
|
+
function setTargetFunctionRole(
|
106
|
+
string memory targetName,
|
107
|
+
bytes4[] calldata selectors,
|
108
|
+
RoleId roleId
|
109
|
+
)
|
110
|
+
external
|
111
|
+
restricted // INSTANCE_OWNER_ROLE
|
112
|
+
{
|
113
|
+
_accessManager.setTargetFunctionRole(targetName, selectors, roleId);
|
231
114
|
}
|
232
115
|
|
233
|
-
function
|
234
|
-
|
116
|
+
function setTargetLocked(address target, bool locked)
|
117
|
+
external
|
118
|
+
restricted // INSTANCE_OWNER_ROLE
|
119
|
+
{
|
120
|
+
_accessManager.setTargetLockedByInstance(target, locked);
|
235
121
|
}
|
236
122
|
|
237
|
-
|
238
|
-
|
123
|
+
//--- ITransferInterceptor ------------------------------------------------------------//
|
124
|
+
function nftMint(address to, uint256 tokenId) external onlyChainNft {
|
125
|
+
assert(_accessManager.roleMembers(INSTANCE_OWNER_ROLE()) == 0);// temp
|
126
|
+
assert(_accessManager.grantRole(INSTANCE_OWNER_ROLE(), to) == true);
|
239
127
|
}
|
240
128
|
|
241
|
-
function
|
242
|
-
|
129
|
+
function nftTransferFrom(address from, address to, uint256 tokenId) external onlyChainNft {
|
130
|
+
assert(_accessManager.revokeRole(INSTANCE_OWNER_ROLE(), from) == true);
|
131
|
+
assert(_accessManager.grantRole(INSTANCE_OWNER_ROLE(), to) == true);
|
243
132
|
}
|
244
133
|
|
245
|
-
function toDistributorKey32(NftId distNftId) public pure returns (Key32) {
|
246
|
-
return distNftId.toKey32(DISTRIBUTOR());
|
247
|
-
}
|
248
|
-
|
249
134
|
function getDistributionService() external view returns (IDistributionService) {
|
250
135
|
return IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), VersionPart.wrap(3)));
|
251
136
|
}
|
@@ -282,10 +167,33 @@ contract Instance is
|
|
282
167
|
function setBundleManager(BundleManager bundleManager) external restricted() {
|
283
168
|
require(address(_bundleManager) == address(0), "BundleManager is set");
|
284
169
|
require(bundleManager.getInstance() == Instance(this), "BundleManager instance mismatch");
|
170
|
+
require(bundleManager.authority() == authority(), "BundleManager authority mismatch");
|
285
171
|
_bundleManager = bundleManager;
|
286
172
|
}
|
287
173
|
|
288
174
|
function getBundleManager() external view returns (BundleManager) {
|
289
175
|
return _bundleManager;
|
290
176
|
}
|
291
|
-
|
177
|
+
|
178
|
+
function setInstanceAccessManager(InstanceAccessManager accessManager) external restricted {
|
179
|
+
require(address(_accessManager) == address(0), "InstanceAccessManager is set");
|
180
|
+
require(accessManager.authority() == authority(), "InstanceAccessManager authority mismatch");
|
181
|
+
_accessManager = accessManager;
|
182
|
+
}
|
183
|
+
|
184
|
+
function getInstanceAccessManager() external view returns (InstanceAccessManager) {
|
185
|
+
return _accessManager;
|
186
|
+
}
|
187
|
+
|
188
|
+
function setInstanceStore(InstanceStore instanceStore) external restricted {
|
189
|
+
require(address(_instanceStore) == address(0), "InstanceStore is set");
|
190
|
+
require(instanceStore.authority() == authority(), "InstanceStore authority mismatch");
|
191
|
+
_instanceStore = instanceStore;
|
192
|
+
}
|
193
|
+
|
194
|
+
function getInstanceStore() external view returns (InstanceStore) {
|
195
|
+
return _instanceStore;
|
196
|
+
}
|
197
|
+
|
198
|
+
//--- internal view/pure functions --------------------------------------//
|
199
|
+
}
|