@etherisc/gif-next 0.0.2-e5a6af8-639 → 0.0.2-e5bdc7a-937
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 +27 -6
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +55 -133
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +8 -38
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +133 -78
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +78 -46
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -23
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +23 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +38 -147
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +92 -190
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +66 -107
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +33 -87
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +155 -141
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +391 -205
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +46 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +24 -4
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +78 -11
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +85 -72
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +302 -74
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +61 -25
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +46 -22
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +36 -46
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.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/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +22 -100
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +11 -23
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +8 -38
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +84 -60
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +66 -22
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +8 -53
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +101 -206
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +58 -70
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +19 -57
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -62
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +77 -75
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +8 -77
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +153 -159
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +61 -33
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -31
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +42 -22
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +13 -38
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +84 -76
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +67 -47
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -7
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +38 -19
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +16 -23
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +132 -121
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +70 -42
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +54 -38
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +56 -32
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +13 -38
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +34 -18
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +40 -16
- 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 +24 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- 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 +62 -38
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +107 -94
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +32 -16
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +39 -15
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +12 -12
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- 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/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +8 -38
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +169 -102
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +74 -42
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -23
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +67 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -23
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.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/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +8 -38
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- 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/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/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +29 -59
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +80 -152
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +50 -46
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +36 -20
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +43 -19
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +43 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +21 -1
- package/contracts/distribution/BasicDistribution.sol +2 -2
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +5 -6
- package/contracts/distribution/DistributionService.sol +19 -20
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +19 -8
- package/contracts/examples/fire/FireProduct.sol +24 -11
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +8 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +34 -2
- package/contracts/examples/unpermissioned/SimpleProduct.sol +15 -21
- package/contracts/instance/BundleSet.sol +38 -34
- package/contracts/instance/IInstance.sol +6 -0
- package/contracts/instance/IInstanceService.sol +7 -5
- package/contracts/instance/Instance.sol +14 -5
- package/contracts/instance/InstanceAdmin.sol +6 -5
- package/contracts/instance/InstanceAuthorizationV3.sol +30 -7
- package/contracts/instance/InstanceReader.sol +85 -1
- package/contracts/instance/InstanceService.sol +32 -19
- package/contracts/instance/RiskSet.sol +119 -0
- package/contracts/instance/base/ObjectSet.sol +24 -25
- package/contracts/instance/module/IComponents.sol +1 -2
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +1 -0
- package/contracts/oracle/OracleService.sol +87 -69
- package/contracts/pool/BasicPool.sol +24 -3
- package/contracts/pool/BasicPoolAuthorization.sol +12 -1
- package/contracts/pool/BundleService.sol +37 -94
- package/contracts/pool/IBundleService.sol +2 -23
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +12 -26
- package/contracts/pool/Pool.sol +112 -102
- package/contracts/pool/PoolService.sol +177 -99
- package/contracts/product/ApplicationService.sol +20 -18
- package/contracts/product/BasicProduct.sol +7 -11
- package/contracts/product/ClaimService.sol +19 -9
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IPolicyService.sol +17 -7
- package/contracts/product/PolicyService.sol +241 -191
- package/contracts/product/PricingService.sol +4 -1
- package/contracts/product/Product.sol +12 -40
- package/contracts/product/RiskService.sol +14 -3
- package/contracts/registry/IRegistry.sol +2 -0
- package/contracts/registry/Registry.sol +9 -1
- package/contracts/registry/RegistryAdmin.sol +14 -11
- package/contracts/registry/ReleaseRegistry.sol +2 -18
- package/contracts/registry/ServiceAuthorizationV3.sol +12 -31
- package/contracts/shared/Component.sol +35 -83
- package/contracts/shared/ComponentService.sol +105 -34
- package/contracts/shared/ComponentVerifyingService.sol +15 -13
- package/contracts/shared/ContractLib.sol +196 -10
- package/contracts/shared/IComponent.sol +5 -12
- package/contracts/shared/IComponentService.sol +13 -3
- package/contracts/shared/InstanceLinkedComponent.sol +1 -9
- package/contracts/shared/NftOwnable.sol +5 -1
- package/contracts/shared/Registerable.sol +0 -2
- package/contracts/shared/RegistryLinked.sol +6 -12
- package/contracts/shared/TokenHandler.sol +316 -66
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +9 -4
- package/contracts/staking/Staking.sol +29 -21
- package/contracts/staking/StakingService.sol +55 -8
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +2 -0
- package/contracts/type/RiskId.sol +18 -6
- package/package.json +3 -3
@@ -19,7 +19,7 @@ import {IProductComponent} from "./IProductComponent.sol";
|
|
19
19
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
20
20
|
import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT, BUNDLE, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
|
21
21
|
import {PayoutId} from "../type/PayoutId.sol";
|
22
|
-
import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE } from "../type/ObjectType.sol";
|
22
|
+
import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE, RISK } from "../type/ObjectType.sol";
|
23
23
|
import {ReferralId} from "../type/Referral.sol";
|
24
24
|
import {RiskId, RiskIdLib} from "../type/RiskId.sol";
|
25
25
|
import {Seconds} from "../type/Seconds.sol";
|
@@ -40,15 +40,13 @@ abstract contract Product is
|
|
40
40
|
bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
|
41
41
|
|
42
42
|
struct ProductStorage {
|
43
|
-
|
44
|
-
|
45
|
-
uint8 _numberOfOracles;
|
43
|
+
IComponents.ProductInfo _productInfo;
|
44
|
+
IComponentService _componentService;
|
46
45
|
IRiskService _riskService;
|
47
46
|
IApplicationService _applicationService;
|
48
47
|
IPolicyService _policyService;
|
49
48
|
IClaimService _claimService;
|
50
49
|
IPricingService _pricingService;
|
51
|
-
IComponentService _componentService;
|
52
50
|
}
|
53
51
|
|
54
52
|
|
@@ -125,38 +123,18 @@ abstract contract Product is
|
|
125
123
|
view
|
126
124
|
returns (IComponents.ProductInfo memory poolInfo)
|
127
125
|
{
|
128
|
-
|
129
|
-
|
130
|
-
return IComponents.ProductInfo({
|
131
|
-
isProcessingFundedClaims: false,
|
132
|
-
hasDistribution: $._hasDistribution,
|
133
|
-
expectedNumberOfOracles: $._numberOfOracles,
|
134
|
-
numberOfOracles: 0,
|
135
|
-
poolNftId: NftIdLib.zero(),
|
136
|
-
distributionNftId: NftIdLib.zero(),
|
137
|
-
oracleNftId: new NftId[]($._numberOfOracles),
|
138
|
-
productFee: FeeLib.zero(),
|
139
|
-
processingFee: FeeLib.zero(),
|
140
|
-
distributionFee: FeeLib.zero(),
|
141
|
-
minDistributionOwnerFee: FeeLib.zero(),
|
142
|
-
poolFee: FeeLib.zero(),
|
143
|
-
stakingFee: FeeLib.zero(),
|
144
|
-
performanceFee: FeeLib.zero()
|
145
|
-
});
|
126
|
+
return _getProductStorage()._productInfo;
|
146
127
|
}
|
147
128
|
|
148
129
|
|
149
130
|
function _initializeProduct(
|
150
131
|
address registry,
|
151
132
|
NftId instanceNftId,
|
152
|
-
IAuthorization authorization,
|
153
|
-
address initialOwner,
|
154
133
|
string memory name,
|
155
134
|
address token,
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
uint8 numberOfOracles,
|
135
|
+
IComponents.ProductInfo memory productInfo,
|
136
|
+
IAuthorization authorization,
|
137
|
+
address initialOwner,
|
160
138
|
bytes memory componentData // writeonly data that will saved in the object info record of the registry
|
161
139
|
)
|
162
140
|
internal
|
@@ -170,15 +148,13 @@ abstract contract Product is
|
|
170
148
|
token,
|
171
149
|
PRODUCT(),
|
172
150
|
authorization,
|
173
|
-
|
151
|
+
productInfo.isInterceptingPolicyTransfers,
|
174
152
|
initialOwner,
|
175
153
|
componentData);
|
176
154
|
|
177
155
|
ProductStorage storage $ = _getProductStorage();
|
178
|
-
$.
|
179
|
-
$.
|
180
|
-
$._numberOfOracles = numberOfOracles;
|
181
|
-
$._riskService = IRiskService(_getServiceAddress(PRODUCT()));
|
156
|
+
$._productInfo = productInfo;
|
157
|
+
$._riskService = IRiskService(_getServiceAddress(RISK()));
|
182
158
|
$._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
|
183
159
|
$._policyService = IPolicyService(_getServiceAddress(POLICY()));
|
184
160
|
$._claimService = IClaimService(_getServiceAddress(CLAIM()));
|
@@ -240,11 +216,6 @@ abstract contract Product is
|
|
240
216
|
}
|
241
217
|
|
242
218
|
|
243
|
-
function _getRiskInfo(RiskId id) internal virtual view returns (IRisk.RiskInfo memory info) {
|
244
|
-
return getInstance().getInstanceReader().getRiskInfo(id);
|
245
|
-
}
|
246
|
-
|
247
|
-
|
248
219
|
function _createApplication(
|
249
220
|
address applicationOwner,
|
250
221
|
RiskId riskId,
|
@@ -277,8 +248,9 @@ abstract contract Product is
|
|
277
248
|
)
|
278
249
|
internal
|
279
250
|
virtual
|
251
|
+
returns (Amount premiumAmount)
|
280
252
|
{
|
281
|
-
_getProductStorage()._policyService.createPolicy(
|
253
|
+
premiumAmount = _getProductStorage()._policyService.createPolicy(
|
282
254
|
applicationNftId,
|
283
255
|
activateAt);
|
284
256
|
}
|
@@ -9,11 +9,12 @@ import {IRegistryService} from "../registry/IRegistryService.sol";
|
|
9
9
|
import {IRisk} from "../instance/module/IRisk.sol";
|
10
10
|
|
11
11
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
12
|
-
import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, REGISTRY} from "../type/ObjectType.sol";
|
13
|
-
import {KEEP_STATE} from "../type/StateId.sol";
|
12
|
+
import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, REGISTRY, RISK} from "../type/ObjectType.sol";
|
13
|
+
import {ACTIVE, PAUSED, KEEP_STATE} from "../type/StateId.sol";
|
14
14
|
import {NftId} from "../type/NftId.sol";
|
15
15
|
import {RiskId} from "../type/RiskId.sol";
|
16
16
|
import {StateId} from "../type/StateId.sol";
|
17
|
+
import {RiskSet} from "../instance/RiskSet.sol";
|
17
18
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
18
19
|
|
19
20
|
contract RiskService is
|
@@ -61,6 +62,10 @@ contract RiskService is
|
|
61
62
|
riskId,
|
62
63
|
riskInfo
|
63
64
|
);
|
65
|
+
|
66
|
+
// add risk to RiskSet
|
67
|
+
RiskSet riskSet = instance.getRiskSet();
|
68
|
+
riskSet.add(riskId);
|
64
69
|
}
|
65
70
|
|
66
71
|
|
@@ -87,10 +92,16 @@ contract RiskService is
|
|
87
92
|
{
|
88
93
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
89
94
|
instance.getInstanceStore().updateRiskState(riskId, state);
|
95
|
+
|
96
|
+
if (state == ACTIVE()) {
|
97
|
+
instance.getRiskSet().activate(riskId);
|
98
|
+
} else if (state == PAUSED()) {
|
99
|
+
instance.getRiskSet().pause(riskId);
|
100
|
+
}
|
90
101
|
}
|
91
102
|
|
92
103
|
|
93
104
|
function _getDomain() internal pure override returns(ObjectType) {
|
94
|
-
return
|
105
|
+
return RISK();
|
95
106
|
}
|
96
107
|
}
|
@@ -129,6 +129,8 @@ interface IRegistry is IERC165 {
|
|
129
129
|
|
130
130
|
function isObjectType(NftId nftId, ObjectType expectedObjectType) external view returns (bool);
|
131
131
|
|
132
|
+
function isObjectType(address contractAddress, ObjectType expectedObjectType) external view returns (bool);
|
133
|
+
|
132
134
|
function getObjectAddress(NftId nftId) external view returns (address objectAddress);
|
133
135
|
|
134
136
|
/// @dev Returns the object info for the specified object address.
|
@@ -13,6 +13,7 @@ import {ObjectType, ObjectTypeLib, PROTOCOL, REGISTRY, SERVICE, INSTANCE, STAKE,
|
|
13
13
|
import {ChainNft} from "./ChainNft.sol";
|
14
14
|
import {IRegistry} from "./IRegistry.sol";
|
15
15
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
16
|
+
import {IStaking} from "../staking/IStaking.sol";
|
16
17
|
import {ReleaseRegistry} from "./ReleaseRegistry.sol";
|
17
18
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
18
19
|
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
@@ -354,7 +355,12 @@ contract Registry is
|
|
354
355
|
return _info[nftId];
|
355
356
|
}
|
356
357
|
|
357
|
-
function isObjectType(
|
358
|
+
function isObjectType(address contractAddress, ObjectType expectedObjectType) external view returns (bool) {
|
359
|
+
NftId nftId = _nftIdByAddress[contractAddress];
|
360
|
+
return isObjectType(nftId, expectedObjectType);
|
361
|
+
}
|
362
|
+
|
363
|
+
function isObjectType(NftId nftId, ObjectType expectedObjectType) public view returns (bool) {
|
358
364
|
return _info[nftId].objectType == expectedObjectType;
|
359
365
|
}
|
360
366
|
|
@@ -635,6 +641,8 @@ contract Registry is
|
|
635
641
|
initialOwner: stakingOwner,
|
636
642
|
data: ""}),
|
637
643
|
true);
|
644
|
+
|
645
|
+
IStaking(_stakingAddress).initializeTokenHandler();
|
638
646
|
}
|
639
647
|
|
640
648
|
/// @dev Register the provided object info for the specified NFT ID.
|
@@ -42,6 +42,7 @@ contract RegistryAdmin is
|
|
42
42
|
string public constant RELEASE_REGISTRY_TARGET_NAME = "ReleaseRegistry";
|
43
43
|
string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
|
44
44
|
string public constant STAKING_TARGET_NAME = "Staking";
|
45
|
+
string public constant STAKING_TH_TARGET_NAME = "StakingTH";
|
45
46
|
string public constant STAKING_STORE_TARGET_NAME = "StakingStore";
|
46
47
|
|
47
48
|
uint8 public constant MAX_NUM_RELEASES = 99;
|
@@ -363,6 +364,7 @@ contract RegistryAdmin is
|
|
363
364
|
onlyInitializing()
|
364
365
|
{
|
365
366
|
_createTarget(_staking, STAKING_TARGET_NAME, true, false);
|
367
|
+
_createTarget(address(IStaking(_staking).getTokenHandler()), STAKING_TH_TARGET_NAME, true, false);
|
366
368
|
_createTarget(_stakingStore, STAKING_STORE_TARGET_NAME, true, false);
|
367
369
|
|
368
370
|
// staking function authorization for staking service
|
@@ -376,7 +378,7 @@ contract RegistryAdmin is
|
|
376
378
|
name: STAKING_SERVICE_ROLE_NAME}));
|
377
379
|
|
378
380
|
FunctionInfo[] memory functions;
|
379
|
-
functions = new FunctionInfo[](
|
381
|
+
functions = new FunctionInfo[](12);
|
380
382
|
functions[0] = toFunction(IStaking.registerTarget.selector, "registerTarget");
|
381
383
|
functions[1] = toFunction(IStaking.setLockingPeriod.selector, "setLockingPeriod");
|
382
384
|
functions[2] = toFunction(IStaking.setRewardRate.selector, "setRewardRate");
|
@@ -388,9 +390,18 @@ contract RegistryAdmin is
|
|
388
390
|
functions[8] = toFunction(IStaking.restake.selector, "restake");
|
389
391
|
functions[9] = toFunction(IStaking.updateRewards.selector, "updateRewards");
|
390
392
|
functions[10] = toFunction(IStaking.claimRewards.selector, "claimRewards");
|
391
|
-
functions[11] = toFunction(IStaking.collectDipAmount.selector, "collectDipAmount");
|
392
|
-
functions[12] = toFunction(IStaking.transferDipAmount.selector, "transferDipAmount");
|
393
393
|
_authorizeTargetFunctions(_staking, stakingServiceRoleId, functions);
|
394
|
+
|
395
|
+
// grant token handler authorizations
|
396
|
+
IStaking staking = IStaking(_staking);
|
397
|
+
functions = new FunctionInfo[](2);
|
398
|
+
functions[0] = toFunction(TokenHandler.collectTokens.selector, "collectTokens");
|
399
|
+
functions[1] = toFunction(TokenHandler.distributeTokens.selector, "distributeTokens");
|
400
|
+
|
401
|
+
_authorizeTargetFunctions(
|
402
|
+
address(staking.getTokenHandler()),
|
403
|
+
stakingServiceRoleId,
|
404
|
+
functions);
|
394
405
|
|
395
406
|
// staking function authorization for pool service
|
396
407
|
RoleId poolServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(POOL());
|
@@ -436,13 +447,5 @@ contract RegistryAdmin is
|
|
436
447
|
_authorizeTargetFunctions(_stakingStore, stakingRoleId, functions);
|
437
448
|
|
438
449
|
_grantRoleToAccount(stakingRoleId, _staking);
|
439
|
-
|
440
|
-
// grant token handler authorizations
|
441
|
-
IStaking staking = IStaking(_staking);
|
442
|
-
functions = new FunctionInfo[](2);
|
443
|
-
functions[0] = toFunction(TokenHandler.collectTokens.selector, "collectTokens");
|
444
|
-
functions[1] = toFunction(TokenHandler.distributeTokens.selector, "distributeTokens");
|
445
|
-
|
446
|
-
_authorizeTargetFunctions(address(staking.getTokenHandler()), stakingRoleId, functions);
|
447
450
|
}
|
448
451
|
}
|
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
5
5
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
6
6
|
|
7
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
7
8
|
import {NftId} from "../type/NftId.sol";
|
8
9
|
import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
9
10
|
import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
@@ -76,8 +77,7 @@ contract ReleaseRegistry is
|
|
76
77
|
constructor(Registry registry)
|
77
78
|
AccessManaged(msg.sender)
|
78
79
|
{
|
79
|
-
|
80
|
-
if(!_isRegistry(address(registry))) {
|
80
|
+
if (!ContractLib.isRegistry(address(registry))) {
|
81
81
|
revert ErrorReleaseRegistryNotRegistry(registry);
|
82
82
|
}
|
83
83
|
|
@@ -481,21 +481,5 @@ contract ReleaseRegistry is
|
|
481
481
|
revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
|
482
482
|
}
|
483
483
|
}
|
484
|
-
|
485
|
-
/// @dev returns true iff a the address passes some simple proxy tests.
|
486
|
-
function _isRegistry(address registryAddress) internal view returns (bool) {
|
487
|
-
|
488
|
-
// zero address is certainly not registry
|
489
|
-
if (registryAddress == address(0)) {
|
490
|
-
return false;
|
491
|
-
}
|
492
|
-
// TODO try catch and return false in case of revert or just panic
|
493
|
-
// check if contract returns a zero nft id for its own address
|
494
|
-
if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
|
495
|
-
return false;
|
496
|
-
}
|
497
|
-
|
498
|
-
return true;
|
499
|
-
}
|
500
484
|
}
|
501
485
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {
|
5
|
-
ALL, REGISTRY,
|
5
|
+
ALL, REGISTRY, RISK, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKING, PRICE
|
6
6
|
} from "../../contracts/type/ObjectType.sol";
|
7
7
|
|
8
8
|
import {IAccess} from "../authorization/IAccess.sol";
|
@@ -36,7 +36,7 @@ contract ServiceAuthorizationV3
|
|
36
36
|
_authorizeDomain(BUNDLE(), address(7));
|
37
37
|
_authorizeDomain(POOL(), address(8));
|
38
38
|
_authorizeDomain(ORACLE(), address(9));
|
39
|
-
_authorizeDomain(
|
39
|
+
_authorizeDomain(RISK(), address(10));
|
40
40
|
_authorizeDomain(POLICY(), address(11));
|
41
41
|
_authorizeDomain(CLAIM(), address(12));
|
42
42
|
_authorizeDomain(APPLICATION(), address(13));
|
@@ -113,11 +113,6 @@ contract ServiceAuthorizationV3
|
|
113
113
|
function _setupInstanceServiceAuthorization()
|
114
114
|
internal
|
115
115
|
{
|
116
|
-
// TODO cleanup
|
117
|
-
// IAccess.FunctionInfo[] storage functions;
|
118
|
-
|
119
|
-
// functions = _authorizeForService(INSTANCE(), COMPONENT());
|
120
|
-
// _authorize(functions, IInstanceService.initializeAuthorization.selector, "initializeAuthorization");
|
121
116
|
}
|
122
117
|
|
123
118
|
|
@@ -125,28 +120,6 @@ contract ServiceAuthorizationV3
|
|
125
120
|
function _setupComponentServiceAuthorization()
|
126
121
|
internal
|
127
122
|
{
|
128
|
-
// TODO cleanup
|
129
|
-
// authz.authorizations = new DomainAuthorization[](4);
|
130
|
-
|
131
|
-
// authz.authorizations[0].domain = POLICY();
|
132
|
-
// _functions = new IAccessAdmin.Function[](1);
|
133
|
-
// __authorize(ComponentService.increaseProductFees.selector, "increaseProductFees"));
|
134
|
-
// authz.authorizations[0].functions = _functions;
|
135
|
-
|
136
|
-
// authz.authorizations[1].domain = DISTRIBUTION();
|
137
|
-
// _functions = new IAccessAdmin.Function[](1);
|
138
|
-
// __authorize(ComponentService.increaseDistributionBalance.selector, "increaseDistributionBalance"));
|
139
|
-
// authz.authorizations[1].functions = _functions;
|
140
|
-
|
141
|
-
// authz.authorizations[2].domain = POOL();
|
142
|
-
// _functions = new IAccessAdmin.Function[](1);
|
143
|
-
// __authorize(ComponentService.increasePoolBalance.selector, "increasePoolBalance"));
|
144
|
-
// authz.authorizations[2].functions = _functions;
|
145
|
-
|
146
|
-
// authz.authorizations[3].domain = BUNDLE();
|
147
|
-
// _functions = new IAccessAdmin.Function[](1);
|
148
|
-
// __authorize(ComponentService.increaseBundleBalance.selector, "increaseBundleBalance"));
|
149
|
-
// authz.authorizations[3].functions = _functions;
|
150
123
|
}
|
151
124
|
|
152
125
|
/// @dev Distribution service function authorization.
|
@@ -184,11 +157,19 @@ contract ServiceAuthorizationV3
|
|
184
157
|
IAccess.FunctionInfo[] storage functions;
|
185
158
|
|
186
159
|
functions = _authorizeForService(BUNDLE(), POOL());
|
187
|
-
_authorize(functions, IBundleService.
|
160
|
+
_authorize(functions, IBundleService.stake.selector, "stake");
|
161
|
+
_authorize(functions, IBundleService.unstake.selector, "unstake");
|
188
162
|
_authorize(functions, IBundleService.close.selector, "close");
|
189
163
|
_authorize(functions, IBundleService.lockCollateral.selector, "lockCollateral");
|
190
164
|
_authorize(functions, IBundleService.releaseCollateral.selector, "releaseCollateral");
|
191
|
-
|
165
|
+
|
166
|
+
functions = _authorizeForService(BUNDLE(), ALL());
|
167
|
+
_authorize(functions, IBundleService.create.selector, "create");
|
168
|
+
_authorize(functions, IBundleService.extend.selector, "extend");
|
169
|
+
_authorize(functions, IBundleService.lock.selector, "lock");
|
170
|
+
_authorize(functions, IBundleService.unlock.selector, "unlock");
|
171
|
+
_authorize(functions, IBundleService.setFee.selector, "setFee");
|
172
|
+
_authorize(functions, IBundleService.withdrawBundleFees.selector, "withdrawBundleFees");
|
192
173
|
}
|
193
174
|
}
|
194
175
|
|
@@ -9,8 +9,9 @@ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
|
|
9
9
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
10
10
|
import {IComponent} from "./IComponent.sol";
|
11
11
|
import {IComponents} from "../instance/module/IComponents.sol";
|
12
|
+
import {IComponentService} from "./IComponentService.sol";
|
12
13
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
13
|
-
import {ObjectType,
|
14
|
+
import {ObjectType, COMPONENT} from "../type/ObjectType.sol";
|
14
15
|
import {Registerable} from "../shared/Registerable.sol";
|
15
16
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
16
17
|
import {VersionPartLib} from "../type/Version.sol";
|
@@ -26,9 +27,9 @@ abstract contract Component is
|
|
26
27
|
struct ComponentStorage {
|
27
28
|
string _name; // unique (per instance) component name
|
28
29
|
IERC20Metadata _token; // token for this component
|
29
|
-
address _wallet;
|
30
30
|
bool _isInterceptor;
|
31
31
|
bytes _data;
|
32
|
+
IComponentService _componentService;
|
32
33
|
}
|
33
34
|
|
34
35
|
|
@@ -83,74 +84,31 @@ abstract contract Component is
|
|
83
84
|
ComponentStorage storage $ = _getComponentStorage();
|
84
85
|
$._name = name;
|
85
86
|
$._token = IERC20Metadata(token);
|
86
|
-
$._wallet = address(this);
|
87
87
|
$._isInterceptor = isInterceptor;
|
88
88
|
$._data = componentData;
|
89
|
+
$._componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
89
90
|
|
90
91
|
_registerInterface(type(IAccessManaged).interfaceId);
|
91
92
|
_registerInterface(type(IComponent).interfaceId);
|
92
93
|
}
|
93
94
|
|
94
95
|
|
95
|
-
function approveTokenHandler(Amount
|
96
|
-
external
|
97
|
-
virtual
|
98
|
-
onlyOwner
|
99
|
-
{
|
100
|
-
approveTokenHandler(address(getToken()), spendingLimitAmount);
|
101
|
-
}
|
102
|
-
|
103
|
-
/// @dev Approves the component's token hander to spend tokens up to the specified limit.
|
104
|
-
/// When the spending limit amount equals AmountLib.max it is set to type(uint256).max.
|
105
|
-
function approveTokenHandler(address token, Amount spendingLimitAmount)
|
96
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount)
|
106
97
|
public
|
107
|
-
|
108
|
-
onlyOwner
|
98
|
+
onlyOwner()
|
109
99
|
{
|
110
|
-
|
111
|
-
revert ErrorComponentWalletNotComponent();
|
112
|
-
}
|
113
|
-
|
114
|
-
uint256 spendingLimit = spendingLimitAmount.toInt();
|
115
|
-
bool isMaxAmount = false;
|
116
|
-
if (spendingLimitAmount == AmountLib.max()) {
|
117
|
-
spendingLimit = type(uint256).max;
|
118
|
-
isMaxAmount = true;
|
119
|
-
}
|
120
|
-
|
121
|
-
emit LogComponentTokenHandlerApproved(address(getTokenHandler()), spendingLimitAmount, isMaxAmount);
|
122
|
-
|
123
|
-
IERC20Metadata(token).approve(
|
124
|
-
address(getTokenHandler()),
|
125
|
-
spendingLimit);
|
100
|
+
_approveTokenHandler(token, amount);
|
126
101
|
}
|
127
102
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
// effects
|
139
|
-
_setWallet(newWallet);
|
140
|
-
|
141
|
-
// interactions
|
142
|
-
if (currentBalance > 0) {
|
143
|
-
// move tokens from old to new wallet
|
144
|
-
emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
|
145
|
-
|
146
|
-
if (currentWallet == address(this)) {
|
147
|
-
// transfer from the component requires an allowance
|
148
|
-
getTokenHandler().distributeTokens(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
|
149
|
-
} else {
|
150
|
-
getTokenHandler().collectTokens(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
|
151
|
-
}
|
152
|
-
}
|
153
|
-
}
|
103
|
+
|
104
|
+
// function setWallet(address newWallet)
|
105
|
+
// external
|
106
|
+
// virtual
|
107
|
+
// override
|
108
|
+
// onlyOwner
|
109
|
+
// {
|
110
|
+
// _setWallet(newWallet);
|
111
|
+
// }
|
154
112
|
|
155
113
|
/// @dev callback function for nft transfers
|
156
114
|
/// may only be called by chain nft contract.
|
@@ -164,7 +122,7 @@ abstract contract Component is
|
|
164
122
|
|
165
123
|
|
166
124
|
function getWallet() public view virtual returns (address walletAddress) {
|
167
|
-
return
|
125
|
+
return getTokenHandler().getWallet();
|
168
126
|
}
|
169
127
|
|
170
128
|
function getTokenHandler() public virtual view returns (TokenHandler tokenHandler) {
|
@@ -208,12 +166,15 @@ abstract contract Component is
|
|
208
166
|
}
|
209
167
|
|
210
168
|
|
211
|
-
|
212
|
-
/// handling logic that deals with nft transfers need to overwrite this function
|
213
|
-
function _nftMint(address to, uint256 tokenId)
|
169
|
+
function _approveTokenHandler(IERC20Metadata token, Amount amount)
|
214
170
|
internal
|
215
171
|
virtual
|
216
|
-
{
|
172
|
+
{
|
173
|
+
_getComponentStorage()._componentService.approveTokenHandler(
|
174
|
+
token,
|
175
|
+
amount);
|
176
|
+
}
|
177
|
+
|
217
178
|
|
218
179
|
/// @dev internal function for nft transfers.
|
219
180
|
/// handling logic that deals with nft transfers need to overwrite this function
|
@@ -225,21 +186,13 @@ abstract contract Component is
|
|
225
186
|
|
226
187
|
/// @dev depending on the source of the component information this function needs to be overwritten.
|
227
188
|
/// eg for instance linked components that externally store this information with the instance store contract
|
228
|
-
function _setWallet(
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
if (newWallet == currentWallet) {
|
237
|
-
revert ErrorComponentWalletAddressIsSameAsCurrent();
|
238
|
-
}
|
239
|
-
|
240
|
-
$._wallet = newWallet;
|
241
|
-
emit LogComponentWalletAddressChanged(currentWallet, newWallet);
|
242
|
-
|
189
|
+
function _setWallet(
|
190
|
+
address newWallet
|
191
|
+
)
|
192
|
+
internal
|
193
|
+
virtual
|
194
|
+
{
|
195
|
+
_getComponentStorage()._componentService.setWallet(newWallet);
|
243
196
|
}
|
244
197
|
|
245
198
|
|
@@ -252,14 +205,13 @@ abstract contract Component is
|
|
252
205
|
name: $._name,
|
253
206
|
token: $._token,
|
254
207
|
tokenHandler: TokenHandler(address(0)),
|
255
|
-
wallet: $._wallet, // initial wallet address
|
256
208
|
data: $._data // user specific component data
|
257
209
|
});
|
258
210
|
}
|
259
211
|
|
260
|
-
|
261
|
-
|
262
|
-
|
212
|
+
/// @dev returns the service address for the specified domain
|
213
|
+
/// gets address via lookup from registry using the major version form the linked instance
|
214
|
+
function _getServiceAddress(ObjectType domain) internal view returns (address) {
|
215
|
+
return getRegistry().getServiceAddress(domain, getRelease());
|
263
216
|
}
|
264
|
-
|
265
217
|
}
|