@etherisc/gif-next 0.0.2-90f8ffc-398 → 0.0.2-9105e58-225
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 +73 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +242 -34
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +592 -41
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +85 -27
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +327 -32
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +187 -43
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +85 -27
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +443 -54
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +342 -34
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +673 -169
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +96 -34
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +762 -422
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +39 -89
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +58 -53
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +289 -104
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +163 -57
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +151 -52
- 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 +2 -2
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +13 -13
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- 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 +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1047 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +543 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +282 -118
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +149 -51
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +932 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +523 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +426 -74
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +174 -48
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +612 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +130 -73
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +548 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +220 -31
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +44 -88
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +23 -31
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +23 -31
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +212 -149
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +162 -64
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +173 -74
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +146 -48
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +173 -74
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +146 -48
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +15 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +82 -34
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +28 -15
- 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 +218 -63
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +142 -50
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +11 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -37
- 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 +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -29
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +48 -0
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +23 -31
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +113 -33
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +143 -39
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -45
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +143 -44
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- 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 +2 -2
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +126 -45
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +161 -62
- 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/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -8
- 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/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- 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 +100 -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/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 +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +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 +100 -0
- 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/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/Component.sol +46 -20
- package/contracts/components/Distribution.sol +188 -33
- package/contracts/components/IComponent.sol +15 -3
- package/contracts/components/IDistributionComponent.sol +54 -1
- package/contracts/components/IPoolComponent.sol +48 -17
- package/contracts/components/Pool.sol +134 -95
- package/contracts/components/Product.sol +76 -57
- package/contracts/instance/IInstance.sol +21 -1
- package/contracts/instance/IInstanceService.sol +18 -0
- package/contracts/instance/Instance.sol +58 -36
- package/contracts/instance/InstanceAccessManager.sol +12 -13
- package/contracts/instance/InstanceService.sol +76 -35
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/base/ComponentService.sol +1 -1
- package/contracts/instance/module/IAccess.sol +3 -4
- package/contracts/instance/module/IPolicy.sol +4 -2
- package/contracts/instance/module/ISetup.sol +5 -4
- package/contracts/instance/service/ApplicationService.sol +268 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +11 -6
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +185 -14
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +11 -1
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +53 -0
- package/contracts/instance/service/IPolicyService.sol +41 -46
- package/contracts/instance/service/PolicyService.sol +94 -158
- package/contracts/instance/service/PolicyServiceManager.sol +1 -1
- package/contracts/instance/service/PoolService.sol +2 -3
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductService.sol +9 -9
- package/contracts/instance/service/ProductServiceManager.sol +1 -1
- package/contracts/registry/IRegistry.sol +3 -2
- package/contracts/registry/IRegistryService.sol +10 -8
- package/contracts/registry/Registry.sol +20 -8
- package/contracts/registry/RegistryService.sol +70 -49
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +8 -9
- package/contracts/registry/TokenRegistry.sol +15 -6
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +3 -3
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IVersionable.sol +2 -2
- package/contracts/shared/NftOwnable.sol +66 -85
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +13 -5
- package/contracts/shared/Registerable.sol +6 -14
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +5 -5
- package/contracts/shared/Versionable.sol +3 -2
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/ObjectType.sol +9 -5
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/RoleId.sol +3 -3
- package/package.json +3 -3
@@ -5,8 +5,9 @@ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/acce
|
|
5
5
|
|
6
6
|
import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
|
7
7
|
import {NftId} from "../types/NftId.sol";
|
8
|
+
import {ClaimId} from "../types/ClaimId.sol";
|
8
9
|
import {NumberId} from "../types/NumberId.sol";
|
9
|
-
import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT} from "../types/ObjectType.sol";
|
10
|
+
import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../types/ObjectType.sol";
|
10
11
|
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
11
12
|
import {RoleId, RoleIdLib} from "../types/RoleId.sol";
|
12
13
|
import {StateId, ACTIVE} from "../types/StateId.sol";
|
@@ -25,6 +26,7 @@ import {KeyValueStore} from "./base/KeyValueStore.sol";
|
|
25
26
|
|
26
27
|
import {IAccess} from "./module/IAccess.sol";
|
27
28
|
import {IBundle} from "./module/IBundle.sol";
|
29
|
+
import {IDistribution} from "./module/IDistribution.sol";
|
28
30
|
import {IPolicy} from "./module/IPolicy.sol";
|
29
31
|
import {IRisk} from "./module/IRisk.sol";
|
30
32
|
import {ISetup} from "./module/ISetup.sol";
|
@@ -59,13 +61,12 @@ contract Instance is
|
|
59
61
|
|
60
62
|
function initialize(address accessManagerAddress, address registryAddress, NftId registryNftId, address initialOwner)
|
61
63
|
public
|
62
|
-
initializer
|
64
|
+
initializer()
|
63
65
|
{
|
64
66
|
__AccessManaged_init(accessManagerAddress);
|
65
67
|
|
66
|
-
|
67
|
-
|
68
|
-
_registerInterface(type(IInstance).interfaceId);
|
68
|
+
initializeRegisterable(registryAddress, registryNftId, INSTANCE(), false, initialOwner, "");
|
69
|
+
registerInterface(type(IInstance).interfaceId);
|
69
70
|
}
|
70
71
|
|
71
72
|
//--- ProductSetup ------------------------------------------------------//
|
@@ -107,43 +108,43 @@ contract Instance is
|
|
107
108
|
updateState(_toNftKey32(poolNftId, POOL()), newState);
|
108
109
|
}
|
109
110
|
|
110
|
-
//--- DistributorType
|
111
|
-
function createDistributorType(
|
112
|
-
create(
|
111
|
+
//--- DistributorType -------------------------------------------------------//
|
112
|
+
function createDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info) external restricted() {
|
113
|
+
create(distributorKey, abi.encode(info));
|
113
114
|
}
|
114
115
|
|
115
|
-
function updateDistributorType(
|
116
|
-
update(
|
116
|
+
function updateDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info, StateId newState) external restricted() {
|
117
|
+
update(distributorKey, abi.encode(info), newState);
|
117
118
|
}
|
118
119
|
|
119
|
-
function updateDistributorTypeState(
|
120
|
-
updateState(
|
120
|
+
function updateDistributorTypeState(Key32 distributorKey, StateId newState) external restricted() {
|
121
|
+
updateState(distributorKey, newState);
|
121
122
|
}
|
122
123
|
|
123
124
|
//--- Distributor -------------------------------------------------------//
|
124
|
-
function createDistributor(NftId
|
125
|
-
create(
|
125
|
+
function createDistributor(NftId nftId, IDistribution.DistributorInfo memory info) external restricted() {
|
126
|
+
create(toDistributorKey32(nftId), abi.encode(info));
|
126
127
|
}
|
127
128
|
|
128
|
-
function updateDistributor(NftId
|
129
|
-
update(
|
129
|
+
function updateDistributor(NftId nftId, IDistribution.DistributorInfo memory info, StateId newState) external restricted() {
|
130
|
+
update(toDistributorKey32(nftId), abi.encode(info), newState);
|
130
131
|
}
|
131
132
|
|
132
|
-
function updateDistributorState(NftId
|
133
|
-
updateState(
|
133
|
+
function updateDistributorState(NftId nftId, StateId newState) external restricted() {
|
134
|
+
updateState(toDistributorKey32(nftId), newState);
|
134
135
|
}
|
135
136
|
|
136
137
|
//--- Referral ----------------------------------------------------------//
|
137
|
-
function createReferral(
|
138
|
-
create(
|
138
|
+
function createReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo) external restricted() {
|
139
|
+
create(referralKey, abi.encode(referralInfo));
|
139
140
|
}
|
140
141
|
|
141
|
-
function updateReferral(
|
142
|
-
update(
|
142
|
+
function updateReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo, StateId newState) external restricted() {
|
143
|
+
update(referralKey, abi.encode(referralInfo), newState);
|
143
144
|
}
|
144
145
|
|
145
|
-
function updateReferralState(
|
146
|
-
updateState(
|
146
|
+
function updateReferralState(Key32 referralKey, StateId newState) external restricted() {
|
147
|
+
updateState(referralKey, newState);
|
147
148
|
}
|
148
149
|
|
149
150
|
//--- Bundle ------------------------------------------------------------//
|
@@ -172,11 +173,20 @@ contract Instance is
|
|
172
173
|
updateState(riskId.toKey32(), newState);
|
173
174
|
}
|
174
175
|
|
175
|
-
//--- Policy
|
176
|
-
function
|
177
|
-
create(toPolicyKey32(
|
176
|
+
//--- Application (Policy) ----------------------------------------------//
|
177
|
+
function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external restricted() {
|
178
|
+
create(toPolicyKey32(applicationNftId), abi.encode(policy));
|
178
179
|
}
|
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 ------------------------------------------------------------//
|
180
190
|
function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
|
181
191
|
update(toPolicyKey32(policyNftId), abi.encode(policy), newState);
|
182
192
|
}
|
@@ -186,15 +196,15 @@ contract Instance is
|
|
186
196
|
}
|
187
197
|
|
188
198
|
//--- Claim -------------------------------------------------------------//
|
189
|
-
function createClaim(NftId policyNftId,
|
199
|
+
function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
|
190
200
|
create(toPolicyKey32(policyNftId), abi.encode(claim));
|
191
201
|
}
|
192
202
|
|
193
|
-
function updateClaim(NftId policyNftId,
|
203
|
+
function updateClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external restricted() {
|
194
204
|
update(toPolicyKey32(policyNftId), abi.encode(claim), newState);
|
195
205
|
}
|
196
206
|
|
197
|
-
function updateClaimState(NftId policyNftId, StateId newState) external restricted() {
|
207
|
+
function updateClaimState(NftId policyNftId, ClaimId claimId, StateId newState) external restricted() {
|
198
208
|
updateState(toPolicyKey32(policyNftId), newState);
|
199
209
|
}
|
200
210
|
|
@@ -203,7 +213,7 @@ contract Instance is
|
|
203
213
|
create(toPolicyKey32(policyNftId), abi.encode(payout));
|
204
214
|
}
|
205
215
|
|
206
|
-
function
|
216
|
+
function updatePayout(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
|
207
217
|
update(toPolicyKey32(policyNftId), abi.encode(payout), newState);
|
208
218
|
}
|
209
219
|
|
@@ -224,24 +234,36 @@ contract Instance is
|
|
224
234
|
return policyNftId.toKey32(POLICY());
|
225
235
|
}
|
226
236
|
|
237
|
+
function toDistributionKey32(NftId distNftId) public pure returns (Key32) {
|
238
|
+
return distNftId.toKey32(DISTRIBUTION());
|
239
|
+
}
|
240
|
+
|
241
|
+
function toDistributorTypeKey32(NftId distNftId) public pure returns (Key32) {
|
242
|
+
return distNftId.toKey32(DISTRIBUTOR_TYPE());
|
243
|
+
}
|
244
|
+
|
245
|
+
function toDistributorKey32(NftId distNftId) public pure returns (Key32) {
|
246
|
+
return distNftId.toKey32(DISTRIBUTOR());
|
247
|
+
}
|
248
|
+
|
227
249
|
function getDistributionService() external view returns (IDistributionService) {
|
228
|
-
return IDistributionService(
|
250
|
+
return IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), VersionPart.wrap(3)));
|
229
251
|
}
|
230
252
|
|
231
253
|
function getProductService() external view returns (IProductService) {
|
232
|
-
return IProductService(
|
254
|
+
return IProductService(getRegistry().getServiceAddress(PRODUCT(), VersionPart.wrap(3)));
|
233
255
|
}
|
234
256
|
|
235
257
|
function getPoolService() external view returns (IPoolService) {
|
236
|
-
return IPoolService(
|
258
|
+
return IPoolService(getRegistry().getServiceAddress(POOL(), VersionPart.wrap(3)));
|
237
259
|
}
|
238
260
|
|
239
261
|
function getPolicyService() external view returns (IPolicyService) {
|
240
|
-
return IPolicyService(
|
262
|
+
return IPolicyService(getRegistry().getServiceAddress(POLICY(), VersionPart.wrap(3)));
|
241
263
|
}
|
242
264
|
|
243
265
|
function getBundleService() external view returns (IBundleService) {
|
244
|
-
return IBundleService(
|
266
|
+
return IBundleService(getRegistry().getServiceAddress(BUNDLE(), VersionPart.wrap(3)));
|
245
267
|
}
|
246
268
|
|
247
269
|
function setInstanceReader(InstanceReader instanceReader) external restricted() {
|
@@ -58,7 +58,7 @@ contract InstanceAccessManager is
|
|
58
58
|
|
59
59
|
function setRoleLocked(RoleId roleId, bool locked) external restricted() {
|
60
60
|
if (!roleExists(roleId)) {
|
61
|
-
revert IAccess.
|
61
|
+
revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
|
62
62
|
}
|
63
63
|
|
64
64
|
_role[roleId].isLocked = locked;
|
@@ -71,7 +71,7 @@ contract InstanceAccessManager is
|
|
71
71
|
|
72
72
|
function grantRole(RoleId roleId, address member) external restricted() returns (bool granted) {
|
73
73
|
if (!roleExists(roleId)) {
|
74
|
-
revert IAccess.
|
74
|
+
revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
|
75
75
|
}
|
76
76
|
|
77
77
|
if (_role[roleId].isLocked) {
|
@@ -161,7 +161,7 @@ contract InstanceAccessManager is
|
|
161
161
|
address target = _targetForName[ShortStrings.toShortString(targetName)];
|
162
162
|
|
163
163
|
if (target == address(0)) {
|
164
|
-
revert IAccess.
|
164
|
+
revert IAccess.ErrorIAccessTargetDoesNotExist(ShortStrings.toShortString(targetName));
|
165
165
|
}
|
166
166
|
|
167
167
|
_target[target].isLocked = locked;
|
@@ -236,7 +236,7 @@ contract InstanceAccessManager is
|
|
236
236
|
}
|
237
237
|
|
238
238
|
if (_target[target].createdAt.gtz()) {
|
239
|
-
revert IAccess.
|
239
|
+
revert IAccess.ErrorIAccessTargetExists(target, _target[target].name);
|
240
240
|
}
|
241
241
|
if (_targetForName[ShortStrings.toShortString(name)] != address(0)) {
|
242
242
|
revert IAccess.ErrorIAccessTargetNameExists(target, _targetForName[ShortStrings.toShortString(name)], ShortStrings.toShortString(name));
|
@@ -258,20 +258,19 @@ contract InstanceAccessManager is
|
|
258
258
|
// TODO: implement
|
259
259
|
}
|
260
260
|
|
261
|
-
function setTargetFunctionRole(
|
262
|
-
address target,
|
263
|
-
bytes4[] calldata selectors,
|
264
|
-
uint64 roleId
|
265
|
-
) public virtual restricted() {
|
266
|
-
_accessManager.setTargetFunctionRole(target, selectors, roleId);
|
267
|
-
}
|
268
|
-
|
269
261
|
function setTargetFunctionRole(
|
270
262
|
string memory targetName,
|
271
263
|
bytes4[] calldata selectors,
|
272
264
|
RoleId roleId
|
273
265
|
) public virtual restricted() {
|
274
266
|
address target = _targetForName[ShortStrings.toShortString(targetName)];
|
267
|
+
|
268
|
+
if (target == address(0)) {
|
269
|
+
revert IAccess.ErrorIAccessTargetDoesNotExist(ShortStrings.toShortString(targetName));
|
270
|
+
}
|
271
|
+
if (! roleExists(roleId)) {
|
272
|
+
revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
|
273
|
+
}
|
275
274
|
uint64 roleIdInt = RoleId.unwrap(roleId);
|
276
275
|
_accessManager.setTargetFunctionRole(target, selectors, roleIdInt);
|
277
276
|
}
|
@@ -279,7 +278,7 @@ contract InstanceAccessManager is
|
|
279
278
|
function setTargetClosed(string memory targetName, bool closed) public restricted() {
|
280
279
|
address target = _targetForName[ShortStrings.toShortString(targetName)];
|
281
280
|
if (target == address(0)) {
|
282
|
-
revert IAccess.
|
281
|
+
revert IAccess.ErrorIAccessTargetDoesNotExist(ShortStrings.toShortString(targetName));
|
283
282
|
}
|
284
283
|
_accessManager.setTargetClosed(target, closed);
|
285
284
|
}
|
@@ -16,13 +16,16 @@ import {Service} from "../../contracts/shared/Service.sol";
|
|
16
16
|
import {IService} from "../shared/IService.sol";
|
17
17
|
import {NftId} from "../../contracts/types/NftId.sol";
|
18
18
|
import {RoleId} from "../types/RoleId.sol";
|
19
|
-
import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, POLICY_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
|
20
|
-
import {ObjectType, INSTANCE, BUNDLE, POLICY, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
|
19
|
+
import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
|
20
|
+
import {ObjectType, INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
|
21
21
|
import {IDistributionComponent} from "../components/IDistributionComponent.sol";
|
22
22
|
import {IPoolComponent} from "../components/IPoolComponent.sol";
|
23
23
|
import {IProductComponent} from "../components/IProductComponent.sol";
|
24
24
|
|
25
|
-
contract InstanceService is
|
25
|
+
contract InstanceService is
|
26
|
+
Service,
|
27
|
+
IInstanceService
|
28
|
+
{
|
26
29
|
|
27
30
|
address internal _masterInstanceAccessManager;
|
28
31
|
address internal _masterInstance;
|
@@ -34,7 +37,7 @@ contract InstanceService is Service, IInstanceService {
|
|
34
37
|
|
35
38
|
modifier onlyInstanceOwner(NftId instanceNftId) {
|
36
39
|
IRegistry registry = getRegistry();
|
37
|
-
ChainNft chainNft = registry.
|
40
|
+
ChainNft chainNft = ChainNft(registry.getChainNftAddress());
|
38
41
|
|
39
42
|
if( msg.sender != chainNft.ownerOf(instanceNftId.toInt())) {
|
40
43
|
revert ErrorInstanceServiceNotInstanceOwner(msg.sender, instanceNftId);
|
@@ -106,7 +109,9 @@ contract InstanceService is Service, IInstanceService {
|
|
106
109
|
_grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
|
107
110
|
_grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
|
108
111
|
_grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
|
112
|
+
_grantApplicationServiceAuthorizations(clonedAccessManager, clonedInstance);
|
109
113
|
_grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
|
114
|
+
_grantClaimServiceAuthorizations(clonedAccessManager, clonedInstance);
|
110
115
|
_grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
|
111
116
|
_grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
|
112
117
|
}
|
@@ -119,7 +124,9 @@ contract InstanceService is Service, IInstanceService {
|
|
119
124
|
clonedAccessManager.createGifRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
|
120
125
|
clonedAccessManager.createGifRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
|
121
126
|
clonedAccessManager.createGifRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
|
127
|
+
clonedAccessManager.createGifRole(APPLICATION_SERVICE_ROLE(), "ApplicationServiceRole");
|
122
128
|
clonedAccessManager.createGifRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
|
129
|
+
clonedAccessManager.createGifRole(CLAIM_SERVICE_ROLE(), "ClaimServiceRole");
|
123
130
|
clonedAccessManager.createGifRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
|
124
131
|
clonedAccessManager.createGifRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
|
125
132
|
}
|
@@ -135,9 +142,18 @@ contract InstanceService is Service, IInstanceService {
|
|
135
142
|
IRegistry registry = getRegistry();
|
136
143
|
address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), getMajorVersion());
|
137
144
|
clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
|
138
|
-
bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](
|
145
|
+
bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
|
139
146
|
instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
|
140
147
|
instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
|
148
|
+
instanceDistributionServiceSelectors[2] = clonedInstance.createDistributorType.selector;
|
149
|
+
instanceDistributionServiceSelectors[3] = clonedInstance.updateDistributorType.selector;
|
150
|
+
instanceDistributionServiceSelectors[4] = clonedInstance.updateDistributorTypeState.selector;
|
151
|
+
instanceDistributionServiceSelectors[5] = clonedInstance.createDistributor.selector;
|
152
|
+
instanceDistributionServiceSelectors[6] = clonedInstance.updateDistributor.selector;
|
153
|
+
instanceDistributionServiceSelectors[7] = clonedInstance.updateDistributorState.selector;
|
154
|
+
instanceDistributionServiceSelectors[8] = clonedInstance.createReferral.selector;
|
155
|
+
instanceDistributionServiceSelectors[9] = clonedInstance.updateReferral.selector;
|
156
|
+
instanceDistributionServiceSelectors[10] = clonedInstance.updateReferralState.selector;
|
141
157
|
clonedAccessManager.setTargetFunctionRole(
|
142
158
|
"Instance",
|
143
159
|
instanceDistributionServiceSelectors,
|
@@ -146,7 +162,7 @@ contract InstanceService is Service, IInstanceService {
|
|
146
162
|
|
147
163
|
function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
148
164
|
// configure authorization for pool service on instance
|
149
|
-
address poolServiceAddress =
|
165
|
+
address poolServiceAddress = getRegistry().getServiceAddress(POOL(), getMajorVersion());
|
150
166
|
clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
|
151
167
|
bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
|
152
168
|
instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
|
@@ -159,7 +175,7 @@ contract InstanceService is Service, IInstanceService {
|
|
159
175
|
|
160
176
|
function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
161
177
|
// configure authorization for product service on instance
|
162
|
-
address productServiceAddress =
|
178
|
+
address productServiceAddress = getRegistry().getServiceAddress(PRODUCT(), getMajorVersion());
|
163
179
|
clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
|
164
180
|
bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
|
165
181
|
instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
|
@@ -173,23 +189,50 @@ contract InstanceService is Service, IInstanceService {
|
|
173
189
|
PRODUCT_SERVICE_ROLE());
|
174
190
|
}
|
175
191
|
|
192
|
+
function _grantApplicationServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
193
|
+
// configure authorization for application services on instance
|
194
|
+
address applicationServiceAddress = getRegistry().getServiceAddress(APPLICATION(), getMajorVersion());
|
195
|
+
clonedAccessManager.grantRole(APPLICATION_SERVICE_ROLE(), applicationServiceAddress);
|
196
|
+
bytes4[] memory instanceApplicationServiceSelectors = new bytes4[](3);
|
197
|
+
instanceApplicationServiceSelectors[0] = clonedInstance.createApplication.selector;
|
198
|
+
instanceApplicationServiceSelectors[1] = clonedInstance.updateApplication.selector;
|
199
|
+
instanceApplicationServiceSelectors[2] = clonedInstance.updateApplicationState.selector;
|
200
|
+
clonedAccessManager.setTargetFunctionRole(
|
201
|
+
"Instance",
|
202
|
+
instanceApplicationServiceSelectors,
|
203
|
+
APPLICATION_SERVICE_ROLE());
|
204
|
+
}
|
205
|
+
|
176
206
|
function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
177
|
-
// configure authorization for policy
|
178
|
-
address policyServiceAddress =
|
179
|
-
clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(),
|
180
|
-
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](
|
181
|
-
instancePolicyServiceSelectors[0] = clonedInstance.
|
182
|
-
instancePolicyServiceSelectors[1] = clonedInstance.
|
183
|
-
instancePolicyServiceSelectors[2] = clonedInstance.updatePolicyState.selector;
|
207
|
+
// configure authorization for policy services on instance
|
208
|
+
address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getMajorVersion());
|
209
|
+
clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), policyServiceAddress);
|
210
|
+
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](2);
|
211
|
+
instancePolicyServiceSelectors[0] = clonedInstance.updatePolicy.selector;
|
212
|
+
instancePolicyServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
|
184
213
|
clonedAccessManager.setTargetFunctionRole(
|
185
214
|
"Instance",
|
186
215
|
instancePolicyServiceSelectors,
|
187
216
|
POLICY_SERVICE_ROLE());
|
188
217
|
}
|
189
218
|
|
219
|
+
function _grantClaimServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
220
|
+
// configure authorization for claim/payout services on instance
|
221
|
+
address claimServiceAddress = getRegistry().getServiceAddress(CLAIM(), getMajorVersion());
|
222
|
+
clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), claimServiceAddress);
|
223
|
+
// TODO add claims function authz
|
224
|
+
bytes4[] memory instanceClaimServiceSelectors = new bytes4[](0);
|
225
|
+
// instanceClaimServiceSelectors[0] = clonedInstance.updatePolicy.selector;
|
226
|
+
// instanceClaimServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
|
227
|
+
clonedAccessManager.setTargetFunctionRole(
|
228
|
+
"Instance",
|
229
|
+
instanceClaimServiceSelectors,
|
230
|
+
CLAIM_SERVICE_ROLE());
|
231
|
+
}
|
232
|
+
|
190
233
|
function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
191
234
|
// configure authorization for bundle service on instance
|
192
|
-
address bundleServiceAddress =
|
235
|
+
address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getMajorVersion());
|
193
236
|
clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
|
194
237
|
bytes4[] memory instanceBundleServiceSelectors = new bytes4[](2);
|
195
238
|
instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
|
@@ -214,7 +257,7 @@ contract InstanceService is Service, IInstanceService {
|
|
214
257
|
|
215
258
|
function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
216
259
|
// configure authorization for instance service on instance
|
217
|
-
address instanceServiceAddress =
|
260
|
+
address instanceServiceAddress = getRegistry().getServiceAddress(INSTANCE(), getMajorVersion());
|
218
261
|
clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
|
219
262
|
bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
|
220
263
|
instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
|
@@ -236,11 +279,11 @@ contract InstanceService is Service, IInstanceService {
|
|
236
279
|
onlyOwner
|
237
280
|
returns(NftId masterInstanceNftId)
|
238
281
|
{
|
239
|
-
|
240
|
-
|
241
|
-
|
282
|
+
if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
|
283
|
+
if(_masterInstanceAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
|
284
|
+
if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
|
242
285
|
|
243
|
-
|
286
|
+
if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
|
244
287
|
|
245
288
|
IInstance instance = IInstance(instanceAddress);
|
246
289
|
InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
|
@@ -250,14 +293,13 @@ contract InstanceService is Service, IInstanceService {
|
|
250
293
|
BundleManager bundleManager = instance.getBundleManager();
|
251
294
|
address bundleManagerAddress = address(bundleManager);
|
252
295
|
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
296
|
+
if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
|
297
|
+
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
|
298
|
+
if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
|
257
299
|
|
258
|
-
|
259
|
-
|
260
|
-
|
300
|
+
if(instance.authority() != accessManagerAddress) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
|
301
|
+
if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
|
302
|
+
if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
|
261
303
|
|
262
304
|
_masterInstanceAccessManager = accessManagerAddress;
|
263
305
|
_masterInstance = instanceAddress;
|
@@ -273,12 +315,12 @@ contract InstanceService is Service, IInstanceService {
|
|
273
315
|
}
|
274
316
|
|
275
317
|
function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
|
276
|
-
|
277
|
-
|
278
|
-
|
318
|
+
if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
|
319
|
+
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
|
320
|
+
if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
|
279
321
|
|
280
322
|
InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
|
281
|
-
|
323
|
+
if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
|
282
324
|
|
283
325
|
_masterInstanceReader = instanceReaderAddress;
|
284
326
|
}
|
@@ -334,9 +376,8 @@ contract InstanceService is Service, IInstanceService {
|
|
334
376
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
335
377
|
// TODO while InstanceService is not deployed in InstanceServiceManager constructor
|
336
378
|
// owner is InstanceServiceManager deployer
|
337
|
-
|
338
|
-
|
339
|
-
_registerInterface(type(IInstanceService).interfaceId);
|
379
|
+
initializeService(registryAddress, owner);
|
380
|
+
registerInterface(type(IInstanceService).interfaceId);
|
340
381
|
}
|
341
382
|
|
342
383
|
function hasRole(address account, RoleId role, address instanceAddress) public view returns (bool) {
|
@@ -392,7 +433,7 @@ contract InstanceService is Service, IInstanceService {
|
|
392
433
|
instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors, POOL_OWNER_ROLE());
|
393
434
|
|
394
435
|
bytes4[] memory fctSelectors2 = new bytes4[](1);
|
395
|
-
fctSelectors2[0] = IPoolComponent.
|
436
|
+
fctSelectors2[0] = IPoolComponent.verifyApplication.selector;
|
396
437
|
instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors2, POLICY_SERVICE_ROLE());
|
397
438
|
}
|
398
439
|
|
@@ -17,7 +17,7 @@ contract InstanceServiceManager is ProxyManager {
|
|
17
17
|
constructor(
|
18
18
|
address registryAddress
|
19
19
|
)
|
20
|
-
ProxyManager()
|
20
|
+
ProxyManager(registryAddress)
|
21
21
|
{
|
22
22
|
InstanceService instSrv = new InstanceService();
|
23
23
|
// bytes memory initCode = type(InstanceService).creationCode;
|
@@ -61,7 +61,7 @@ abstract contract ComponentService is Service {
|
|
61
61
|
owner = msg.sender;
|
62
62
|
|
63
63
|
// check component has not already been registerd
|
64
|
-
NftId compoentNftId =
|
64
|
+
NftId compoentNftId = getRegistry().getNftId(componentAddress);
|
65
65
|
if(compoentNftId.gtz()) {
|
66
66
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress, compoentNftId);
|
67
67
|
}
|
@@ -1,7 +1,6 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
5
4
|
import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
|
6
5
|
|
7
6
|
import {RoleId} from "../../types/RoleId.sol";
|
@@ -34,15 +33,15 @@ interface IAccess {
|
|
34
33
|
error ErrorIAccessRoleNameNotUnique(RoleId roleId, ShortString name);
|
35
34
|
error ErrorIAccessRoleInvalidUpdate(RoleId roleId, bool isCustom);
|
36
35
|
error ErrorIAccessRoleIsCustomIsImmutable(RoleId roleId, bool isCustom, bool isCustomExisting);
|
37
|
-
error ErrorIAccessSetLockedForNonexstentRole(RoleId roleId);
|
38
36
|
error ErrorIAccessGrantNonexstentRole(RoleId roleId);
|
39
37
|
error ErrorIAccessRevokeNonexstentRole(RoleId roleId);
|
40
38
|
error ErrorIAccessRenounceNonexstentRole(RoleId roleId);
|
41
39
|
|
42
40
|
error ErrorIAccessTargetAddressZero();
|
43
|
-
error
|
41
|
+
error ErrorIAccessTargetDoesNotExist(ShortString name);
|
42
|
+
error ErrorIAccessTargetAddressDoesNotExist(address target);
|
43
|
+
error ErrorIAccessTargetExists(address target, ShortString name);
|
44
44
|
error ErrorIAccessTargetNameEmpty(address target);
|
45
45
|
error ErrorIAccessTargetNameExists(address target, address existingTarget, ShortString name);
|
46
|
-
error ErrorIAccessSetLockedForNonexstentTarget(address target);
|
47
46
|
error ErrorIAccessTargetLocked(address target);
|
48
47
|
}
|
@@ -2,12 +2,14 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {NftId} from "../../types/NftId.sol";
|
5
|
-
import {
|
5
|
+
import {ClaimId} from "../../types/ClaimId.sol";
|
6
6
|
import {ReferralId} from "../../types/Referral.sol";
|
7
7
|
import {RiskId} from "../../types/RiskId.sol";
|
8
8
|
import {Timestamp} from "../../types/Timestamp.sol";
|
9
9
|
|
10
10
|
interface IPolicy {
|
11
|
+
|
12
|
+
/// @dev policy data for the full policy lifecycle
|
11
13
|
struct PolicyInfo {
|
12
14
|
NftId productNftId;
|
13
15
|
NftId bundleNftId;
|
@@ -37,7 +39,7 @@ interface IPolicy {
|
|
37
39
|
|
38
40
|
// claimId neeeds to be encoded policyNftId:claimId combination
|
39
41
|
struct PayoutInfo {
|
40
|
-
|
42
|
+
ClaimId claimId;
|
41
43
|
uint256 amount;
|
42
44
|
bytes data;
|
43
45
|
Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
|
@@ -28,19 +28,20 @@ interface ISetup {
|
|
28
28
|
NftId productNftId;
|
29
29
|
TokenHandler tokenHandler;
|
30
30
|
Fee distributionFee; // default distribution fee (no referral id)
|
31
|
-
bool isIntercepting; // intercepts nft transfers (for distributors)
|
32
31
|
address wallet;
|
33
32
|
}
|
34
33
|
|
35
34
|
struct PoolSetupInfo {
|
36
35
|
NftId productNftId;
|
37
36
|
TokenHandler tokenHandler;
|
38
|
-
|
37
|
+
bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
|
38
|
+
bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
|
39
|
+
bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
|
40
|
+
UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
|
41
|
+
UFixed retentionLevel; // amount of collateral held in pool (default 100%)
|
39
42
|
Fee poolFee; // pool fee on net premium
|
40
43
|
Fee stakingFee; // pool fee on staked capital from investor
|
41
44
|
Fee performanceFee; // pool fee on profits from capital investors
|
42
|
-
bool isIntercepting; // intercepts nft transfers (for bundles)
|
43
|
-
bool isConfirmingApplication; // confirms applications before they are underwritten
|
44
45
|
address wallet;
|
45
46
|
}
|
46
47
|
}
|