@etherisc/gif-next 0.0.2-f62dcdf-553 → 0.0.2-f634e5c-828
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +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 -147
- 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 -52
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +121 -82
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +72 -48
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -37
- 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 +37 -160
- 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 +93 -200
- 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 +79 -121
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +33 -101
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +155 -155
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +391 -219
- 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 +64 -18
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +24 -17
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +96 -29
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +103 -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 +71 -48
- 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 +59 -69
- 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 -114
- 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 -37
- 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 -52
- 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 -67
- 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 -76
- 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 -91
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +154 -160
- 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 +58 -23
- 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 -52
- 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 +74 -66
- 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 -37
- 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 +50 -34
- 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 -52
- 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/ChainNft.sol/ChainNft.json +2 -2
- 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 +256 -116
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +78 -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 +146 -14
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -37
- 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 -52
- 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 +3 -3
- 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 +13 -13
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +3 -3
- 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/Amount.sol/AmountLib.json +3 -3
- 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/Fee.sol/FeeLib.json +3 -3
- 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/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- 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 -2
- package/contracts/authorization/ReleaseAccessManager.sol +1 -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 +18 -19
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +16 -3
- package/contracts/examples/fire/FireProduct.sol +24 -8
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +15 -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 +7 -2
- package/contracts/instance/IInstanceService.sol +7 -9
- package/contracts/instance/Instance.sol +16 -9
- package/contracts/instance/InstanceAdmin.sol +41 -30
- package/contracts/instance/InstanceAuthorizationV3.sol +33 -9
- package/contracts/instance/InstanceReader.sol +88 -2
- package/contracts/instance/InstanceService.sol +39 -58
- package/contracts/instance/RiskSet.sol +119 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- 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 +14 -84
- 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 +156 -88
- package/contracts/product/ApplicationService.sol +12 -12
- package/contracts/product/BasicProduct.sol +7 -11
- package/contracts/product/ClaimService.sol +3 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IPolicyService.sol +17 -7
- package/contracts/product/PolicyService.sol +237 -195
- package/contracts/product/Product.sol +12 -40
- package/contracts/product/RiskService.sol +14 -3
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +2 -0
- package/contracts/registry/Registry.sol +9 -1
- package/contracts/registry/RegistryAdmin.sol +15 -12
- package/contracts/registry/ReleaseRegistry.sol +5 -20
- package/contracts/registry/ServiceAuthorizationV3.sol +13 -31
- package/contracts/shared/Component.sol +43 -86
- package/contracts/shared/ComponentService.sol +160 -36
- 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 +19 -5
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/InstanceLinkedComponent.sol +1 -17
- 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 +41 -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/contracts/type/UFixed.sol +9 -119
- package/package.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
@@ -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
|
}
|
@@ -62,6 +62,7 @@ contract ChainNft is ERC721Enumerable {
|
|
62
62
|
// 3 -> staking
|
63
63
|
// >= 4 -> all other objects
|
64
64
|
_idNext = 4;
|
65
|
+
_totalMinted = 0;
|
65
66
|
}
|
66
67
|
|
67
68
|
/**
|
@@ -108,10 +109,11 @@ contract ChainNft is ERC721Enumerable {
|
|
108
109
|
|
109
110
|
|
110
111
|
/**
|
111
|
-
* @dev
|
112
|
-
*
|
112
|
+
* @dev Amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id.
|
113
|
+
* This allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
|
113
114
|
*/
|
114
115
|
function transferFrom(address from, address to, uint256 tokenId) public override (IERC721, ERC721) {
|
116
|
+
// default open zeppelin implementation of transferFrom
|
115
117
|
super.transferFrom(from, to, tokenId);
|
116
118
|
|
117
119
|
if (_interceptor[tokenId] != address(0)) {
|
@@ -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;
|
@@ -62,7 +63,7 @@ contract RegistryAdmin is
|
|
62
63
|
address gifManager
|
63
64
|
)
|
64
65
|
external
|
65
|
-
initializer
|
66
|
+
initializer()
|
66
67
|
onlyDeployer()
|
67
68
|
{
|
68
69
|
_registry = address(registry);
|
@@ -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";
|
@@ -70,14 +71,14 @@ contract ReleaseRegistry is
|
|
70
71
|
VersionPart internal _latest; // latest active version
|
71
72
|
VersionPart internal _next; // version to create and activate
|
72
73
|
|
73
|
-
|
74
|
-
uint256 internal
|
74
|
+
// counters per release
|
75
|
+
uint256 internal _registeredServices = 0;
|
76
|
+
uint256 internal _servicesToRegister = 0;
|
75
77
|
|
76
78
|
constructor(Registry registry)
|
77
79
|
AccessManaged(msg.sender)
|
78
80
|
{
|
79
|
-
|
80
|
-
if(!_isRegistry(address(registry))) {
|
81
|
+
if (!ContractLib.isRegistry(address(registry))) {
|
81
82
|
revert ErrorReleaseRegistryNotRegistry(registry);
|
82
83
|
}
|
83
84
|
|
@@ -481,21 +482,5 @@ contract ReleaseRegistry is
|
|
481
482
|
revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
|
482
483
|
}
|
483
484
|
}
|
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
485
|
}
|
501
486
|
|
@@ -2,13 +2,14 @@
|
|
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";
|
9
9
|
import {IBundleService} from "../pool/IBundleService.sol";
|
10
10
|
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
11
11
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
12
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
12
13
|
import {IPoolService} from "../pool/IPoolService.sol";
|
13
14
|
import {IStakingService} from "../staking/IStakingService.sol";
|
14
15
|
import {IRegistryService} from "./IRegistryService.sol";
|
@@ -36,7 +37,7 @@ contract ServiceAuthorizationV3
|
|
36
37
|
_authorizeDomain(BUNDLE(), address(7));
|
37
38
|
_authorizeDomain(POOL(), address(8));
|
38
39
|
_authorizeDomain(ORACLE(), address(9));
|
39
|
-
_authorizeDomain(
|
40
|
+
_authorizeDomain(RISK(), address(10));
|
40
41
|
_authorizeDomain(POLICY(), address(11));
|
41
42
|
_authorizeDomain(CLAIM(), address(12));
|
42
43
|
_authorizeDomain(APPLICATION(), address(13));
|
@@ -113,11 +114,6 @@ contract ServiceAuthorizationV3
|
|
113
114
|
function _setupInstanceServiceAuthorization()
|
114
115
|
internal
|
115
116
|
{
|
116
|
-
// TODO cleanup
|
117
|
-
// IAccess.FunctionInfo[] storage functions;
|
118
|
-
|
119
|
-
// functions = _authorizeForService(INSTANCE(), COMPONENT());
|
120
|
-
// _authorize(functions, IInstanceService.initializeAuthorization.selector, "initializeAuthorization");
|
121
117
|
}
|
122
118
|
|
123
119
|
|
@@ -125,28 +121,6 @@ contract ServiceAuthorizationV3
|
|
125
121
|
function _setupComponentServiceAuthorization()
|
126
122
|
internal
|
127
123
|
{
|
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
124
|
}
|
151
125
|
|
152
126
|
/// @dev Distribution service function authorization.
|
@@ -184,11 +158,19 @@ contract ServiceAuthorizationV3
|
|
184
158
|
IAccess.FunctionInfo[] storage functions;
|
185
159
|
|
186
160
|
functions = _authorizeForService(BUNDLE(), POOL());
|
187
|
-
_authorize(functions, IBundleService.
|
161
|
+
_authorize(functions, IBundleService.stake.selector, "stake");
|
162
|
+
_authorize(functions, IBundleService.unstake.selector, "unstake");
|
188
163
|
_authorize(functions, IBundleService.close.selector, "close");
|
189
164
|
_authorize(functions, IBundleService.lockCollateral.selector, "lockCollateral");
|
190
165
|
_authorize(functions, IBundleService.releaseCollateral.selector, "releaseCollateral");
|
191
|
-
|
166
|
+
|
167
|
+
functions = _authorizeForService(BUNDLE(), ALL());
|
168
|
+
_authorize(functions, IBundleService.create.selector, "create");
|
169
|
+
_authorize(functions, IBundleService.extend.selector, "extend");
|
170
|
+
_authorize(functions, IBundleService.lock.selector, "lock");
|
171
|
+
_authorize(functions, IBundleService.unlock.selector, "unlock");
|
172
|
+
_authorize(functions, IBundleService.setFee.selector, "setFee");
|
173
|
+
_authorize(functions, IBundleService.withdrawBundleFees.selector, "withdrawBundleFees");
|
192
174
|
}
|
193
175
|
}
|
194
176
|
|
@@ -4,16 +4,15 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
5
|
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
6
6
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
7
|
-
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
8
7
|
|
9
|
-
import {Amount
|
8
|
+
import {Amount} from "../type/Amount.sol";
|
10
9
|
import {IComponent} from "./IComponent.sol";
|
11
10
|
import {IComponents} from "../instance/module/IComponents.sol";
|
12
|
-
import {
|
13
|
-
import {
|
11
|
+
import {IComponentService} from "./IComponentService.sol";
|
12
|
+
import {NftId} from "../type/NftId.sol";
|
13
|
+
import {ObjectType, COMPONENT} from "../type/ObjectType.sol";
|
14
14
|
import {Registerable} from "../shared/Registerable.sol";
|
15
15
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
16
|
-
import {VersionPartLib} from "../type/Version.sol";
|
17
16
|
|
18
17
|
abstract contract Component is
|
19
18
|
AccessManagedUpgradeable,
|
@@ -26,9 +25,9 @@ abstract contract Component is
|
|
26
25
|
struct ComponentStorage {
|
27
26
|
string _name; // unique (per instance) component name
|
28
27
|
IERC20Metadata _token; // token for this component
|
29
|
-
address _wallet;
|
30
28
|
bool _isInterceptor;
|
31
29
|
bytes _data;
|
30
|
+
IComponentService _componentService;
|
32
31
|
}
|
33
32
|
|
34
33
|
|
@@ -83,74 +82,31 @@ abstract contract Component is
|
|
83
82
|
ComponentStorage storage $ = _getComponentStorage();
|
84
83
|
$._name = name;
|
85
84
|
$._token = IERC20Metadata(token);
|
86
|
-
$._wallet = address(this);
|
87
85
|
$._isInterceptor = isInterceptor;
|
88
86
|
$._data = componentData;
|
87
|
+
$._componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
89
88
|
|
90
89
|
_registerInterface(type(IAccessManaged).interfaceId);
|
91
90
|
_registerInterface(type(IComponent).interfaceId);
|
92
91
|
}
|
93
92
|
|
94
93
|
|
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)
|
94
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount)
|
106
95
|
public
|
107
|
-
|
108
|
-
onlyOwner
|
96
|
+
onlyOwner()
|
109
97
|
{
|
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);
|
98
|
+
_approveTokenHandler(token, amount);
|
126
99
|
}
|
127
100
|
|
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
|
-
}
|
101
|
+
|
102
|
+
// function setWallet(address newWallet)
|
103
|
+
// external
|
104
|
+
// virtual
|
105
|
+
// override
|
106
|
+
// onlyOwner
|
107
|
+
// {
|
108
|
+
// _setWallet(newWallet);
|
109
|
+
// }
|
154
110
|
|
155
111
|
/// @dev callback function for nft transfers
|
156
112
|
/// may only be called by chain nft contract.
|
@@ -164,7 +120,7 @@ abstract contract Component is
|
|
164
120
|
|
165
121
|
|
166
122
|
function getWallet() public view virtual returns (address walletAddress) {
|
167
|
-
return
|
123
|
+
return getTokenHandler().getWallet();
|
168
124
|
}
|
169
125
|
|
170
126
|
function getTokenHandler() public virtual view returns (TokenHandler tokenHandler) {
|
@@ -208,12 +164,15 @@ abstract contract Component is
|
|
208
164
|
}
|
209
165
|
|
210
166
|
|
211
|
-
|
212
|
-
/// handling logic that deals with nft transfers need to overwrite this function
|
213
|
-
function _nftMint(address to, uint256 tokenId)
|
167
|
+
function _approveTokenHandler(IERC20Metadata token, Amount amount)
|
214
168
|
internal
|
215
169
|
virtual
|
216
|
-
{
|
170
|
+
{
|
171
|
+
_getComponentStorage()._componentService.approveTokenHandler(
|
172
|
+
token,
|
173
|
+
amount);
|
174
|
+
}
|
175
|
+
|
217
176
|
|
218
177
|
/// @dev internal function for nft transfers.
|
219
178
|
/// handling logic that deals with nft transfers need to overwrite this function
|
@@ -225,21 +184,20 @@ abstract contract Component is
|
|
225
184
|
|
226
185
|
/// @dev depending on the source of the component information this function needs to be overwritten.
|
227
186
|
/// 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);
|
187
|
+
function _setWallet(
|
188
|
+
address newWallet
|
189
|
+
)
|
190
|
+
internal
|
191
|
+
virtual
|
192
|
+
{
|
193
|
+
_getComponentStorage()._componentService.setWallet(newWallet);
|
194
|
+
}
|
242
195
|
|
196
|
+
function _setLocked(bool locked)
|
197
|
+
internal
|
198
|
+
virtual
|
199
|
+
{
|
200
|
+
_getComponentStorage()._componentService.setLockedFromComponent(address(this), locked);
|
243
201
|
}
|
244
202
|
|
245
203
|
|
@@ -252,14 +210,13 @@ abstract contract Component is
|
|
252
210
|
name: $._name,
|
253
211
|
token: $._token,
|
254
212
|
tokenHandler: TokenHandler(address(0)),
|
255
|
-
wallet: $._wallet, // initial wallet address
|
256
213
|
data: $._data // user specific component data
|
257
214
|
});
|
258
215
|
}
|
259
216
|
|
260
|
-
|
261
|
-
|
262
|
-
|
217
|
+
/// @dev returns the service address for the specified domain
|
218
|
+
/// gets address via lookup from registry using the major version form the linked instance
|
219
|
+
function _getServiceAddress(ObjectType domain) internal view returns (address) {
|
220
|
+
return getRegistry().getServiceAddress(domain, getRelease());
|
263
221
|
}
|
264
|
-
|
265
222
|
}
|