@etherisc/gif-next 0.0.2-f15b559-661 → 0.0.2-f1b01e0-214
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 +43 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +38 -38
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +26 -26
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +6 -6
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +366 -251
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +8 -39
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +101 -28
- 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/IAccessAdmin.sol/IAccessAdmin.json +283 -189
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +37 -5
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.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 +32 -145
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +101 -46
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1 -87
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +160 -89
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +56 -52
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1 -87
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +68 -5
- 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 +44 -74
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +101 -46
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +94 -124
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +101 -46
- 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 +82 -173
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +101 -46
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +20 -63
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +69 -112
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +101 -46
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +95 -138
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +101 -46
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +104 -8
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +62 -13
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +119 -26
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +520 -413
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +101 -46
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +225 -196
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +94 -65
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +26 -36
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +356 -346
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +2 -2
- 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/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +20 -20
- 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 +14 -35
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +98 -35
- 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 +0 -21
- 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 +0 -21
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +42 -42
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +31 -31
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +22 -43
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +101 -46
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +64 -64
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +39 -39
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +6 -6
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +10 -31
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +18 -18
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +10 -31
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +34 -34
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +80 -80
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +41 -41
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +90 -24
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -22
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +27 -48
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +101 -46
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +78 -78
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +50 -50
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +42 -0
- 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/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +21 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +21 -42
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +21 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +62 -62
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +32 -32
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +41 -41
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -82
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +31 -51
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +21 -42
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +55 -26
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +27 -23
- 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/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRelease.sol/IRelease.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 +2 -2
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +445 -355
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +19 -19
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +481 -376
- 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 +128 -124
- 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 +0 -21
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +114 -129
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +45 -49
- 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 +60 -4
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -21
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +44 -51
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -21
- 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/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -21
- 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/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 +2 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +83 -39
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +75 -4
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +133 -94
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
- 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 +41 -37
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +34 -61
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +109 -30
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +27 -23
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +148 -134
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +47 -37
- 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 +10 -10
- 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 +93 -37
- 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 +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- 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 +33 -31
- 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 +2 -2
- 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 +60 -36
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +56 -2
- 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 +4 -4
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/IAccountingService.sol +2 -2
- package/contracts/authorization/AccessAdmin.sol +201 -186
- package/contracts/authorization/AccessAdminLib.sol +183 -0
- package/contracts/authorization/AccessManagerCloneable.sol +40 -31
- package/contracts/authorization/Authorization.sol +61 -33
- package/contracts/authorization/IAccess.sol +13 -5
- package/contracts/authorization/IAccessAdmin.sol +63 -36
- package/contracts/authorization/IAuthorization.sol +6 -0
- package/contracts/distribution/BasicDistribution.sol +6 -6
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +3 -48
- package/contracts/distribution/DistributionService.sol +57 -30
- package/contracts/distribution/IDistributionComponent.sol +0 -9
- package/contracts/distribution/IDistributionService.sol +4 -2
- package/contracts/examples/fire/FirePool.sol +0 -4
- package/contracts/examples/fire/FireProduct.sol +0 -4
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +0 -4
- package/contracts/examples/unpermissioned/SimpleProduct.sol +0 -4
- package/contracts/instance/IInstance.sol +45 -9
- package/contracts/instance/IInstanceService.sol +19 -3
- package/contracts/instance/Instance.sol +73 -16
- package/contracts/instance/InstanceAdmin.sol +120 -107
- package/contracts/instance/InstanceAuthorizationV3.sol +43 -21
- package/contracts/instance/InstanceReader.sol +13 -0
- package/contracts/instance/InstanceService.sol +128 -73
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +16 -5
- package/contracts/instance/module/IDistribution.sol +19 -7
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +2 -0
- package/contracts/oracle/BasicOracle.sol +1 -3
- package/contracts/oracle/BasicOracleAuthorization.sol +1 -1
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/Oracle.sol +0 -2
- package/contracts/pool/BasicPool.sol +0 -2
- package/contracts/pool/BasicPoolAuthorization.sol +1 -1
- package/contracts/pool/Pool.sol +0 -2
- package/contracts/pool/PoolService.sol +1 -3
- package/contracts/product/ApplicationService.sol +21 -6
- package/contracts/product/BasicProduct.sol +0 -2
- package/contracts/product/BasicProductAuthorization.sol +1 -1
- package/contracts/product/IApplicationService.sol +3 -0
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IRiskService.sol +3 -0
- package/contracts/product/PolicyService.sol +0 -18
- package/contracts/product/PricingService.sol +11 -6
- package/contracts/product/Product.sol +0 -2
- package/contracts/product/RiskService.sol +10 -0
- package/contracts/registry/IRegistry.sol +4 -0
- package/contracts/registry/RegistryAdmin.sol +133 -229
- package/contracts/registry/RegistryAuthorization.sol +267 -0
- package/contracts/registry/ReleaseAdmin.sol +30 -22
- package/contracts/registry/ReleaseRegistry.sol +39 -33
- package/contracts/registry/ServiceAuthorizationV3.sol +87 -3
- package/contracts/shared/Component.sol +13 -30
- package/contracts/shared/ComponentService.sol +58 -42
- package/contracts/shared/ContractLib.sol +28 -0
- package/contracts/shared/IComponent.sol +0 -3
- package/contracts/shared/IComponentService.sol +9 -9
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +0 -2
- package/contracts/shared/NftOwnable.sol +1 -1
- package/contracts/shared/Registerable.sol +1 -4
- package/contracts/shared/TokenHandler.sol +5 -4
- package/contracts/staking/IStaking.sol +12 -2
- package/contracts/staking/IStakingService.sol +8 -1
- package/contracts/staking/Staking.sol +35 -15
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +79 -22
- package/contracts/staking/StakingReader.sol +5 -15
- package/contracts/staking/StakingService.sol +36 -2
- package/contracts/staking/StakingStore.sol +2 -1
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/ObjectType.sol +5 -14
- package/contracts/type/UFixed.sol +27 -10
- package/contracts/type/Version.sol +39 -0
- package/package.json +2 -2
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
| @@ -7,10 +7,14 @@ import { | |
| 7 7 |  | 
| 8 8 | 
             
            import {IAccess} from "../authorization/IAccess.sol";
         | 
| 9 9 | 
             
            import {IAccountingService} from "../accounting/IAccountingService.sol";
         | 
| 10 | 
            +
            import {IApplicationService} from "../product/IApplicationService.sol";
         | 
| 10 11 | 
             
            import {IBundleService} from "../pool/IBundleService.sol";
         | 
| 11 12 | 
             
            import {IClaimService} from "../product/IClaimService.sol";
         | 
| 13 | 
            +
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 12 14 | 
             
            import {IDistributionService} from "../distribution/IDistributionService.sol";
         | 
| 13 15 | 
             
            import {IInstanceService} from "../instance/IInstanceService.sol";
         | 
| 16 | 
            +
            import {IOracleService} from "../oracle/IOracleService.sol";
         | 
| 17 | 
            +
            import {IPolicyService} from "../product/IPolicyService.sol";
         | 
| 14 18 | 
             
            import {IPoolService} from "../pool/IPoolService.sol";
         | 
| 15 19 | 
             
            import {IStakingService} from "../staking/IStakingService.sol";
         | 
| 16 20 | 
             
            import {IRegistryService} from "./IRegistryService.sol";
         | 
| @@ -62,6 +66,9 @@ contract ServiceAuthorizationV3 | |
| 62 66 | 
             
                      _setupDistributionServiceAuthorization();
         | 
| 63 67 | 
             
                      _setupPoolServiceAuthorization();
         | 
| 64 68 | 
             
                      _setupBundleServiceAuthorization();
         | 
| 69 | 
            +
                      _setupOracleServiceAuthorization();
         | 
| 70 | 
            +
                      _setupApplicationServiceAuthorization();
         | 
| 71 | 
            +
                      _setupPolicyServiceAuthorization();
         | 
| 65 72 | 
             
                 }
         | 
| 66 73 |  | 
| 67 74 |  | 
| @@ -104,6 +111,7 @@ contract ServiceAuthorizationV3 | |
| 104 111 | 
             
                      _authorize(functions, IStakingService.createInstanceTarget.selector, "createInstanceTarget");
         | 
| 105 112 | 
             
                      _authorize(functions, IStakingService.setInstanceLockingPeriod.selector, "setInstanceLockingPeriod");
         | 
| 106 113 | 
             
                      _authorize(functions, IStakingService.setInstanceRewardRate.selector, "setInstanceRewardRate");
         | 
| 114 | 
            +
                      _authorize(functions, IStakingService.setInstanceMaxStakedAmount.selector, "setInstanceMaxStakedAmount");
         | 
| 107 115 | 
             
                      _authorize(functions, IStakingService.refillInstanceRewardReserves.selector, "refillInstanceRewardReserves");
         | 
| 108 116 | 
             
                      _authorize(functions, IStakingService.withdrawInstanceRewardReserves.selector, "withdrawInstanceRewardReserves");
         | 
| 109 117 |  | 
| @@ -123,12 +131,16 @@ contract ServiceAuthorizationV3 | |
| 123 131 | 
             
                 {
         | 
| 124 132 | 
             
                      IAccess.FunctionInfo[] storage functions;
         | 
| 125 133 | 
             
                      functions = _authorizeForService(INSTANCE(), ALL());
         | 
| 134 | 
            +
                      _authorize(functions, IInstanceService.setInstanceLocked.selector, "setInstanceLocked");
         | 
| 135 | 
            +
                      _authorize(functions, IInstanceService.setTargetLocked.selector, "setTargetLocked");
         | 
| 136 | 
            +
             | 
| 126 137 | 
             
                      _authorize(functions, IInstanceService.createInstance.selector, "createInstance");
         | 
| 127 138 | 
             
                      _authorize(functions, IInstanceService.upgradeInstanceReader.selector, "upgradeInstanceReader");
         | 
| 128 139 | 
             
                      _authorize(functions, IInstanceService.upgradeMasterInstanceReader.selector, "upgradeMasterInstanceReader");
         | 
| 129 140 |  | 
| 130 141 | 
             
                      _authorize(functions, IInstanceService.setStakingLockingPeriod.selector, "setStakingLockingPeriod");
         | 
| 131 142 | 
             
                      _authorize(functions, IInstanceService.setStakingRewardRate.selector, "setStakingRewardRate");
         | 
| 143 | 
            +
                      _authorize(functions, IInstanceService.setStakingMaxAmount.selector, "setStakingMaxAmount");
         | 
| 132 144 | 
             
                      _authorize(functions, IInstanceService.refillStakingRewardReserves.selector, "refillStakingRewardReserves");
         | 
| 133 145 | 
             
                      _authorize(functions, IInstanceService.withdrawStakingRewardReserves.selector, "withdrawStakingRewardReserves");
         | 
| 134 146 | 
             
                 }
         | 
| @@ -143,9 +155,6 @@ contract ServiceAuthorizationV3 | |
| 143 155 | 
             
                      _authorize(functions, IAccountingService.increaseBundleBalance.selector, "increaseBundleBalance");
         | 
| 144 156 | 
             
                      _authorize(functions, IAccountingService.decreaseBundleBalance.selector, "decreaseBundleBalance");
         | 
| 145 157 |  | 
| 146 | 
            -
                      functions = _authorizeForService(ACCOUNTING(), POOL());
         | 
| 147 | 
            -
                      _authorize(functions, IAccountingService.decreaseBundleBalanceForPool.selector, "decreaseBundleBalanceForPool");
         | 
| 148 | 
            -
             | 
| 149 158 | 
             
                      functions = _authorizeForService(ACCOUNTING(), COMPONENT());
         | 
| 150 159 | 
             
                      _authorize(functions, IAccountingService.decreaseComponentFees.selector, "decreaseComponentFees");
         | 
| 151 160 |  | 
| @@ -171,6 +180,19 @@ contract ServiceAuthorizationV3 | |
| 171 180 | 
             
                 function _setupComponentServiceAuthorization()
         | 
| 172 181 | 
             
                      internal
         | 
| 173 182 | 
             
                 {
         | 
| 183 | 
            +
                      IAccess.FunctionInfo[] storage functions;
         | 
| 184 | 
            +
             | 
| 185 | 
            +
                      functions = _authorizeForService(COMPONENT(), ALL());
         | 
| 186 | 
            +
                      _authorize(functions, IComponentService.registerComponent.selector, "registerComponent");
         | 
| 187 | 
            +
                      _authorize(functions, IComponentService.approveTokenHandler.selector, "approveTokenHandler");
         | 
| 188 | 
            +
                      _authorize(functions, IComponentService.setWallet.selector, "setWallet");
         | 
| 189 | 
            +
                      _authorize(functions, IComponentService.setLocked.selector, "setLocked");
         | 
| 190 | 
            +
                      _authorize(functions, IComponentService.withdrawFees.selector, "withdrawFees");
         | 
| 191 | 
            +
                      _authorize(functions, IComponentService.registerProduct.selector, "registerProduct");
         | 
| 192 | 
            +
                      _authorize(functions, IComponentService.setProductFees.selector, "setProductFees");
         | 
| 193 | 
            +
                      _authorize(functions, IComponentService.setDistributionFees.selector, "setDistributionFees");
         | 
| 194 | 
            +
                      _authorize(functions, IComponentService.setPoolFees.selector, "setPoolFees");
         | 
| 195 | 
            +
             | 
| 174 196 | 
             
                 }
         | 
| 175 197 |  | 
| 176 198 | 
             
                 /// @dev Distribution service function authorization.
         | 
| @@ -191,6 +213,14 @@ contract ServiceAuthorizationV3 | |
| 191 213 | 
             
                      IAccess.FunctionInfo[] storage functions;
         | 
| 192 214 | 
             
                      functions = _authorizeForService(CLAIM(), ALL());
         | 
| 193 215 | 
             
                      _authorize(functions, IClaimService.submit.selector, "submit");
         | 
| 216 | 
            +
                      _authorize(functions, IClaimService.confirm.selector, "confirm");
         | 
| 217 | 
            +
                      _authorize(functions, IClaimService.decline.selector, "decline");
         | 
| 218 | 
            +
                      _authorize(functions, IClaimService.revoke.selector, "revoke");
         | 
| 219 | 
            +
                      _authorize(functions, IClaimService.close.selector, "close");
         | 
| 220 | 
            +
                      _authorize(functions, IClaimService.createPayoutForBeneficiary.selector, "createPayoutForBeneficiary");
         | 
| 221 | 
            +
                      _authorize(functions, IClaimService.createPayout.selector, "createPayout");
         | 
| 222 | 
            +
                      _authorize(functions, IClaimService.processPayout.selector, "processPayout");
         | 
| 223 | 
            +
                      _authorize(functions, IClaimService.cancelPayout.selector, "cancelPayout");
         | 
| 194 224 | 
             
                 }
         | 
| 195 225 |  | 
| 196 226 | 
             
                 /// @dev Distribution service function authorization.
         | 
| @@ -201,6 +231,13 @@ contract ServiceAuthorizationV3 | |
| 201 231 | 
             
                      functions = _authorizeForService(DISTRIBUTION(), POLICY());
         | 
| 202 232 | 
             
                      _authorize(functions, IDistributionService.processSale.selector, "processSale");
         | 
| 203 233 | 
             
                      _authorize(functions, IDistributionService.processReferral.selector, "processReferral");
         | 
| 234 | 
            +
             | 
| 235 | 
            +
                      functions = _authorizeForService(DISTRIBUTION(), ALL());
         | 
| 236 | 
            +
                      _authorize(functions, IDistributionService.createDistributorType.selector, "createDistributorType");
         | 
| 237 | 
            +
                      _authorize(functions, IDistributionService.createDistributor.selector, "createDistributor");
         | 
| 238 | 
            +
                      _authorize(functions, IDistributionService.changeDistributorType.selector, "changeDistributorType");
         | 
| 239 | 
            +
                      _authorize(functions, IDistributionService.createReferral.selector, "createReferral");
         | 
| 240 | 
            +
                      _authorize(functions, IDistributionService.withdrawCommission.selector, "withdrawCommission");
         | 
| 204 241 | 
             
                 }
         | 
| 205 242 |  | 
| 206 243 |  | 
| @@ -219,6 +256,13 @@ contract ServiceAuthorizationV3 | |
| 219 256 | 
             
                      _authorize(functions, IPoolService.processPayout.selector, "processPayout");
         | 
| 220 257 |  | 
| 221 258 | 
             
                      functions = _authorizeForService(POOL(), ALL());
         | 
| 259 | 
            +
                      _authorize(functions, IPoolService.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
         | 
| 260 | 
            +
                      _authorize(functions, IPoolService.closeBundle.selector, "closeBundle");
         | 
| 261 | 
            +
                      _authorize(functions, IPoolService.processFundedClaim.selector, "processFundedClaim");
         | 
| 262 | 
            +
                      _authorize(functions, IPoolService.stake.selector, "stake");
         | 
| 263 | 
            +
                      _authorize(functions, IPoolService.unstake.selector, "unstake");
         | 
| 264 | 
            +
                      _authorize(functions, IPoolService.fundPoolWallet.selector, "fundPoolWallet");
         | 
| 265 | 
            +
                      _authorize(functions, IPoolService.defundPoolWallet.selector, "defundPoolWallet");
         | 
| 222 266 | 
             
                      _authorize(functions, IPoolService.withdrawBundleFees.selector, "withdrawBundleFees");
         | 
| 223 267 | 
             
                 }
         | 
| 224 268 |  | 
| @@ -243,5 +287,45 @@ contract ServiceAuthorizationV3 | |
| 243 287 | 
             
                      _authorize(functions, IBundleService.unlock.selector, "unlock");
         | 
| 244 288 | 
             
                      _authorize(functions, IBundleService.setFee.selector, "setFee");
         | 
| 245 289 | 
             
                 }
         | 
| 290 | 
            +
             | 
| 291 | 
            +
                 function _setupOracleServiceAuthorization()
         | 
| 292 | 
            +
                      internal
         | 
| 293 | 
            +
                 {
         | 
| 294 | 
            +
                      IAccess.FunctionInfo[] storage functions;
         | 
| 295 | 
            +
             | 
| 296 | 
            +
                      functions = _authorizeForService(ORACLE(), ALL());
         | 
| 297 | 
            +
                      _authorize(functions, IOracleService.request.selector, "request");
         | 
| 298 | 
            +
                      _authorize(functions, IOracleService.respond.selector, "respond");
         | 
| 299 | 
            +
                      _authorize(functions, IOracleService.resend.selector, "resend");
         | 
| 300 | 
            +
                      _authorize(functions, IOracleService.cancel.selector, "cancel");
         | 
| 301 | 
            +
                 }
         | 
| 302 | 
            +
             | 
| 303 | 
            +
                 function _setupApplicationServiceAuthorization()
         | 
| 304 | 
            +
                      internal
         | 
| 305 | 
            +
                 {
         | 
| 306 | 
            +
                      IAccess.FunctionInfo[] storage functions;
         | 
| 307 | 
            +
             | 
| 308 | 
            +
                      functions = _authorizeForService(APPLICATION(), ALL());
         | 
| 309 | 
            +
                      _authorize(functions, IApplicationService.create.selector, "create");
         | 
| 310 | 
            +
                      _authorize(functions, IApplicationService.renew.selector, "renew");
         | 
| 311 | 
            +
                      _authorize(functions, IApplicationService.adjust.selector, "adjust");
         | 
| 312 | 
            +
                      _authorize(functions, IApplicationService.revoke.selector, "revoke");
         | 
| 313 | 
            +
                 }
         | 
| 314 | 
            +
             | 
| 315 | 
            +
                 function _setupPolicyServiceAuthorization()
         | 
| 316 | 
            +
                      internal
         | 
| 317 | 
            +
                 {
         | 
| 318 | 
            +
                      IAccess.FunctionInfo[] storage functions;
         | 
| 319 | 
            +
             | 
| 320 | 
            +
                      functions = _authorizeForService(POLICY(), ALL());
         | 
| 321 | 
            +
                      _authorize(functions, IPolicyService.decline.selector, "decline");
         | 
| 322 | 
            +
                      _authorize(functions, IPolicyService.createPolicy.selector, "createPolicy");
         | 
| 323 | 
            +
                      _authorize(functions, IPolicyService.collectPremium.selector, "collectPremium");
         | 
| 324 | 
            +
                      _authorize(functions, IPolicyService.activate.selector, "activate");
         | 
| 325 | 
            +
                      _authorize(functions, IPolicyService.expire.selector, "expire");
         | 
| 326 | 
            +
                      _authorize(functions, IPolicyService.expirePolicy.selector, "expirePolicy");
         | 
| 327 | 
            +
                      _authorize(functions, IPolicyService.close.selector, "close");
         | 
| 328 | 
            +
             | 
| 329 | 
            +
                 }
         | 
| 246 330 | 
             
            }
         | 
| 247 331 |  | 
| @@ -4,19 +4,15 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
         | 
| 5 5 | 
             
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 6 6 |  | 
| 7 | 
            +
            import {Amount} from "../type/Amount.sol";
         | 
| 7 8 | 
             
            import {IComponent} from "./IComponent.sol";
         | 
| 8 9 | 
             
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 9 10 | 
             
            import {IComponentService} from "./IComponentService.sol";
         | 
| 10 | 
            -
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 11 | 
            -
            import {IRelease} from "../registry/IRelease.sol";
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 14 | 
            -
            import {ContractLib} from "./ContractLib.sol";
         | 
| 15 11 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 16 | 
            -
            import {ObjectType, COMPONENT | 
| 12 | 
            +
            import {ObjectType, COMPONENT} from "../type/ObjectType.sol";
         | 
| 17 13 | 
             
            import {Registerable} from "../shared/Registerable.sol";
         | 
| 18 14 | 
             
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 19 | 
            -
            import {Version, VersionLib | 
| 15 | 
            +
            import {Version, VersionLib} from "../type/Version.sol";
         | 
| 20 16 |  | 
| 21 17 |  | 
| 22 18 | 
             
            abstract contract Component is
         | 
| @@ -28,7 +24,6 @@ abstract contract Component is | |
| 28 24 |  | 
| 29 25 | 
             
                struct ComponentStorage {
         | 
| 30 26 | 
             
                    string _name; // unique (per instance) component name
         | 
| 31 | 
            -
                    IERC20Metadata _token; // token for this component
         | 
| 32 27 | 
             
                    bool _isInterceptor;
         | 
| 33 28 | 
             
                    bytes _data;
         | 
| 34 29 | 
             
                    IComponentService _componentService;
         | 
| @@ -44,6 +39,7 @@ abstract contract Component is | |
| 44 39 |  | 
| 45 40 |  | 
| 46 41 | 
             
                function _getComponentStorage() private pure returns (ComponentStorage storage $) {
         | 
| 42 | 
            +
                    // solhint-disable-next-line no-inline-assembly
         | 
| 47 43 | 
             
                    assembly {
         | 
| 48 44 | 
             
                        $.slot := COMPONENT_LOCATION_V1
         | 
| 49 45 | 
             
                    }
         | 
| @@ -55,7 +51,6 @@ abstract contract Component is | |
| 55 51 | 
             
                    address registry,
         | 
| 56 52 | 
             
                    NftId parentNftId,
         | 
| 57 53 | 
             
                    string memory name,
         | 
| 58 | 
            -
                    address token,
         | 
| 59 54 | 
             
                    ObjectType componentType,
         | 
| 60 55 | 
             
                    bool isInterceptor,
         | 
| 61 56 | 
             
                    address initialOwner,
         | 
| @@ -66,20 +61,6 @@ abstract contract Component is | |
| 66 61 | 
             
                    virtual
         | 
| 67 62 | 
             
                    onlyInitializing()
         | 
| 68 63 | 
             
                {
         | 
| 69 | 
            -
                    address tokenRegistry = IRegistry(registry).getTokenRegistryAddress();
         | 
| 70 | 
            -
                    VersionPart release = IRelease(authority).getRelease();
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                    // special case for staking: component intitialization happens before
         | 
| 73 | 
            -
                    // GIF core contract setup is complete. at that time token registry 
         | 
| 74 | 
            -
                    // is not yet available. therefore we skip the check for staking.
         | 
| 75 | 
            -
                    if (componentType != STAKING()) {
         | 
| 76 | 
            -
             | 
| 77 | 
            -
                        // check if provided token is whitelisted and active
         | 
| 78 | 
            -
                        if (!ContractLib.isActiveToken(tokenRegistry, token, block.chainid, release)) {
         | 
| 79 | 
            -
                            revert ErrorComponentTokenInvalid(token);
         | 
| 80 | 
            -
                        }
         | 
| 81 | 
            -
                    }
         | 
| 82 | 
            -
             | 
| 83 64 | 
             
                    if (bytes(name).length == 0) {
         | 
| 84 65 | 
             
                        revert ErrorComponentNameLengthZero();
         | 
| 85 66 | 
             
                    }
         | 
| @@ -96,7 +77,6 @@ abstract contract Component is | |
| 96 77 | 
             
                    // set component state
         | 
| 97 78 | 
             
                    ComponentStorage storage $ = _getComponentStorage();
         | 
| 98 79 | 
             
                    $._name = name;
         | 
| 99 | 
            -
                    $._token = IERC20Metadata(token);
         | 
| 100 80 | 
             
                    $._isInterceptor = isInterceptor;
         | 
| 101 81 | 
             
                    $._data = componentData;
         | 
| 102 82 | 
             
                    $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
         | 
| @@ -111,7 +91,7 @@ abstract contract Component is | |
| 111 91 | 
             
                /// override internal function _nftTransferFrom to implement custom behaviour
         | 
| 112 92 | 
             
                function nftTransferFrom(address from, address to, uint256 tokenId, address operator)
         | 
| 113 93 | 
             
                    external
         | 
| 114 | 
            -
                    onlyChainNft | 
| 94 | 
            +
                    onlyChainNft
         | 
| 115 95 | 
             
                {
         | 
| 116 96 | 
             
                    _nftTransferFrom(from, to, tokenId, operator);
         | 
| 117 97 | 
             
                }
         | 
| @@ -126,7 +106,7 @@ abstract contract Component is | |
| 126 106 | 
             
                }
         | 
| 127 107 |  | 
| 128 108 | 
             
                function getToken() public view virtual returns (IERC20Metadata token) {
         | 
| 129 | 
            -
                    return  | 
| 109 | 
            +
                    return getTokenHandler().TOKEN();
         | 
| 130 110 | 
             
                }
         | 
| 131 111 |  | 
| 132 112 | 
             
                function getName() public view override returns(string memory name) {
         | 
| @@ -184,10 +164,14 @@ abstract contract Component is | |
| 184 164 | 
             
                function _nftTransferFrom(address from, address to, uint256 tokenId, address operator)
         | 
| 185 165 | 
             
                    internal
         | 
| 186 166 | 
             
                    virtual
         | 
| 187 | 
            -
                 | 
| 167 | 
            +
                // solhint-disable-next-line no-empty-blocks
         | 
| 168 | 
            +
                { 
         | 
| 169 | 
            +
                    // empty default implementation
         | 
| 170 | 
            +
                }
         | 
| 188 171 |  | 
| 189 172 |  | 
| 190 | 
            -
                /// @dev  | 
| 173 | 
            +
                /// @dev Sets the components wallet to the specified address.
         | 
| 174 | 
            +
                /// Depending on the source of the component information this function needs to be overwritten. 
         | 
| 191 175 | 
             
                /// eg for instance linked components that externally store this information with the instance store contract
         | 
| 192 176 | 
             
                function _setWallet(
         | 
| 193 177 | 
             
                    address newWallet
         | 
| @@ -202,7 +186,7 @@ abstract contract Component is | |
| 202 186 | 
             
                    internal
         | 
| 203 187 | 
             
                    virtual
         | 
| 204 188 | 
             
                {
         | 
| 205 | 
            -
                    _getComponentStorage()._componentService. | 
| 189 | 
            +
                    _getComponentStorage()._componentService.setLocked(locked);
         | 
| 206 190 | 
             
                }
         | 
| 207 191 |  | 
| 208 192 |  | 
| @@ -213,7 +197,6 @@ abstract contract Component is | |
| 213 197 |  | 
| 214 198 | 
             
                    return IComponents.ComponentInfo({
         | 
| 215 199 | 
             
                        name: $._name,
         | 
| 216 | 
            -
                        token: $._token,
         | 
| 217 200 | 
             
                        tokenHandler: TokenHandler(address(0)),
         | 
| 218 201 | 
             
                        data: $._data // user specific component data
         | 
| 219 202 | 
             
                    });
         | 
| @@ -19,6 +19,7 @@ import {IRegisterable} from "../shared/IRegisterable.sol"; | |
| 19 19 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 20 20 | 
             
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 21 21 |  | 
| 22 | 
            +
            import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
         | 
| 22 23 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 23 24 | 
             
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 24 25 | 
             
            import {Fee, FeeLib} from "../type/Fee.sol";
         | 
| @@ -98,15 +99,18 @@ contract ComponentService is | |
| 98 99 | 
             
                    returns (NftId componentNftId)
         | 
| 99 100 | 
             
                {
         | 
| 100 101 | 
             
                    // type specific registration
         | 
| 101 | 
            -
                     | 
| 102 | 
            +
                    IRegistry.ObjectInfo memory componentObjectInfo = IInstanceLinkedComponent(component).getInitialInfo();
         | 
| 103 | 
            +
                    ObjectType componentType = componentObjectInfo.objectType;        
         | 
| 104 | 
            +
                    IComponent productComponent = IComponent(getRegistry().getObjectAddress(componentObjectInfo.parentNftId));
         | 
| 105 | 
            +
             | 
| 102 106 | 
             
                    if (componentType == POOL()) {
         | 
| 103 | 
            -
                        return _registerPool(component);
         | 
| 107 | 
            +
                        return _registerPool(component, address(productComponent.getToken()));
         | 
| 104 108 | 
             
                    }
         | 
| 105 109 | 
             
                    if (componentType == DISTRIBUTION()) {
         | 
| 106 | 
            -
                        return _registerDistribution(component);
         | 
| 110 | 
            +
                        return _registerDistribution(component, address(productComponent.getToken()));
         | 
| 107 111 | 
             
                    }
         | 
| 108 112 | 
             
                    if (componentType == ORACLE()) {
         | 
| 109 | 
            -
                        return _registerOracle(component);
         | 
| 113 | 
            +
                        return _registerOracle(component, address(productComponent.getToken()));
         | 
| 110 114 | 
             
                    }
         | 
| 111 115 |  | 
| 112 116 | 
             
                    // fail
         | 
| @@ -144,31 +148,24 @@ contract ComponentService is | |
| 144 148 | 
             
                }
         | 
| 145 149 |  | 
| 146 150 | 
             
                /// @inheritdoc IComponentService
         | 
| 147 | 
            -
                function  | 
| 151 | 
            +
                function setLocked(bool locked) 
         | 
| 148 152 | 
             
                    external 
         | 
| 149 153 | 
             
                    virtual
         | 
| 150 | 
            -
                     | 
| 151 | 
            -
                {
         | 
| 152 | 
            -
                    address instanceAddress = msg.sender;
         | 
| 153 | 
            -
                    // NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| 154 | 
            -
                    IInstance instance = IInstance(instanceAddress);
         | 
| 155 | 
            -
                    _setLocked(instance.getInstanceAdmin(), componentAddress, locked);
         | 
| 156 | 
            -
                }
         | 
| 157 | 
            -
             | 
| 158 | 
            -
                /// @inheritdoc IComponentService
         | 
| 159 | 
            -
                function setLockedFromComponent(address componentAddress, bool locked) 
         | 
| 160 | 
            -
                    external
         | 
| 161 | 
            -
                    virtual
         | 
| 162 | 
            -
                    onlyComponent(msg.sender)
         | 
| 154 | 
            +
                    restricted()
         | 
| 163 155 | 
             
                {
         | 
| 164 156 | 
             
                    (, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
         | 
| 165 | 
            -
             | 
| 157 | 
            +
             | 
| 158 | 
            +
                    address component = msg.sender;
         | 
| 159 | 
            +
                    instance.getInstanceAdmin().setComponentLocked(
         | 
| 160 | 
            +
                        component, 
         | 
| 161 | 
            +
                        locked);
         | 
| 166 162 | 
             
                }
         | 
| 167 163 |  | 
| 168 164 | 
             
                /// @inheritdoc IComponentService
         | 
| 169 165 | 
             
                function withdrawFees(Amount amount)
         | 
| 170 166 | 
             
                    external
         | 
| 171 167 | 
             
                    virtual
         | 
| 168 | 
            +
                    restricted()
         | 
| 172 169 | 
             
                    returns (Amount withdrawnAmount)
         | 
| 173 170 | 
             
                {
         | 
| 174 171 | 
             
                    // checks
         | 
| @@ -198,6 +195,7 @@ contract ComponentService is | |
| 198 195 | 
             
                        componentNftId, 
         | 
| 199 196 | 
             
                        withdrawnAmount);
         | 
| 200 197 |  | 
| 198 | 
            +
                    // transfer amount to component owner
         | 
| 201 199 | 
             
                    address componentOwner = getRegistry().ownerOf(componentNftId);
         | 
| 202 200 | 
             
                    TokenHandler tokenHandler = instanceReader.getTokenHandler(componentNftId);
         | 
| 203 201 | 
             
                    emit LogComponentServiceComponentFeesWithdrawn(
         | 
| @@ -216,7 +214,7 @@ contract ComponentService is | |
| 216 214 |  | 
| 217 215 | 
             
                //-------- product ------------------------------------------------------//
         | 
| 218 216 |  | 
| 219 | 
            -
                function registerProduct(address productAddress)
         | 
| 217 | 
            +
                function registerProduct(address productAddress, address token)
         | 
| 220 218 | 
             
                    external
         | 
| 221 219 | 
             
                    virtual
         | 
| 222 220 | 
             
                    nonReentrant()
         | 
| @@ -228,7 +226,8 @@ contract ComponentService is | |
| 228 226 | 
             
                    InstanceStore instanceStore;
         | 
| 229 227 | 
             
                    (, instanceAdmin, instanceStore,, productNftId) = _register(
         | 
| 230 228 | 
             
                        productAddress,
         | 
| 231 | 
            -
                        PRODUCT() | 
| 229 | 
            +
                        PRODUCT(),
         | 
| 230 | 
            +
                        token);
         | 
| 232 231 |  | 
| 233 232 | 
             
                    // get product
         | 
| 234 233 | 
             
                    IProductComponent product = IProductComponent(productAddress);
         | 
| @@ -286,7 +285,7 @@ contract ComponentService is | |
| 286 285 | 
             
                //-------- distribution -------------------------------------------------//
         | 
| 287 286 |  | 
| 288 287 | 
             
                /// @dev registers the sending component as a distribution component
         | 
| 289 | 
            -
                function _registerDistribution(address distributioAddress)
         | 
| 288 | 
            +
                function _registerDistribution(address distributioAddress, address token)
         | 
| 290 289 | 
             
                    internal
         | 
| 291 290 | 
             
                    virtual
         | 
| 292 291 | 
             
                    nonReentrant()
         | 
| @@ -299,7 +298,8 @@ contract ComponentService is | |
| 299 298 | 
             
                    NftId productNftId;
         | 
| 300 299 | 
             
                    (instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
         | 
| 301 300 | 
             
                        distributioAddress,
         | 
| 302 | 
            -
                        DISTRIBUTION() | 
| 301 | 
            +
                        DISTRIBUTION(),
         | 
| 302 | 
            +
                        token);
         | 
| 303 303 |  | 
| 304 304 | 
             
                    // check product is still expecting a distribution registration
         | 
| 305 305 | 
             
                    IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
         | 
| @@ -350,7 +350,7 @@ contract ComponentService is | |
| 350 350 |  | 
| 351 351 | 
             
                //-------- oracle -------------------------------------------------------//
         | 
| 352 352 |  | 
| 353 | 
            -
                function _registerOracle(address oracleAddress)
         | 
| 353 | 
            +
                function _registerOracle(address oracleAddress, address token)
         | 
| 354 354 | 
             
                    internal
         | 
| 355 355 | 
             
                    virtual
         | 
| 356 356 | 
             
                    returns (NftId oracleNftId)
         | 
| @@ -363,7 +363,8 @@ contract ComponentService is | |
| 363 363 |  | 
| 364 364 | 
             
                    (instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
         | 
| 365 365 | 
             
                        oracleAddress,
         | 
| 366 | 
            -
                        ORACLE() | 
| 366 | 
            +
                        ORACLE(),
         | 
| 367 | 
            +
                        token);
         | 
| 367 368 |  | 
| 368 369 | 
             
                    // check product is still expecting an oracle registration
         | 
| 369 370 | 
             
                    IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
         | 
| @@ -382,7 +383,7 @@ contract ComponentService is | |
| 382 383 |  | 
| 383 384 | 
             
                //-------- pool ---------------------------------------------------------//
         | 
| 384 385 |  | 
| 385 | 
            -
                function _registerPool(address poolAddress)
         | 
| 386 | 
            +
                function _registerPool(address poolAddress, address token)
         | 
| 386 387 | 
             
                    internal
         | 
| 387 388 | 
             
                    virtual
         | 
| 388 389 | 
             
                    returns (NftId poolNftId)
         | 
| @@ -395,7 +396,8 @@ contract ComponentService is | |
| 395 396 |  | 
| 396 397 | 
             
                    (instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
         | 
| 397 398 | 
             
                        poolAddress,
         | 
| 398 | 
            -
                        POOL() | 
| 399 | 
            +
                        POOL(),
         | 
| 400 | 
            +
                        token);
         | 
| 399 401 |  | 
| 400 402 | 
             
                    // check product is still expecting a pool registration
         | 
| 401 403 | 
             
                    IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
         | 
| @@ -459,7 +461,8 @@ contract ComponentService is | |
| 459 461 | 
             
                /// @dev Registers the component represented by the provided address.
         | 
| 460 462 | 
             
                function _register(
         | 
| 461 463 | 
             
                    address componentAddress, // address of component to register
         | 
| 462 | 
            -
                    ObjectType requiredType // required type for component for registration
         | 
| 464 | 
            +
                    ObjectType requiredType, // required type for component for registration
         | 
| 465 | 
            +
                    address token
         | 
| 463 466 | 
             
                )
         | 
| 464 467 | 
             
                    internal
         | 
| 465 468 | 
             
                    virtual
         | 
| @@ -487,6 +490,18 @@ contract ComponentService is | |
| 487 490 | 
             
                        componentAddress,
         | 
| 488 491 | 
             
                        requiredType);
         | 
| 489 492 |  | 
| 493 | 
            +
                    if (! instance.isTokenRegistryDisabled()) {
         | 
| 494 | 
            +
                        // check if provided token is whitelisted and active
         | 
| 495 | 
            +
                        if (!ContractLib.isActiveToken(
         | 
| 496 | 
            +
                            getRegistry().getTokenRegistryAddress(), 
         | 
| 497 | 
            +
                            token, 
         | 
| 498 | 
            +
                            block.chainid, 
         | 
| 499 | 
            +
                            AccessManagerCloneable(authority()).getRelease())
         | 
| 500 | 
            +
                        ) {
         | 
| 501 | 
            +
                            revert ErrorComponentServiceTokenInvalid(token);
         | 
| 502 | 
            +
                        }
         | 
| 503 | 
            +
                    }
         | 
| 504 | 
            +
             | 
| 490 505 | 
             
                    // get instance supporting contracts (as function return values)
         | 
| 491 506 | 
             
                    instanceReader = instance.getInstanceReader();
         | 
| 492 507 | 
             
                    instanceAdmin = instance.getInstanceAdmin();
         | 
| @@ -502,26 +517,27 @@ contract ComponentService is | |
| 502 517 | 
             
                    }
         | 
| 503 518 |  | 
| 504 519 | 
             
                    // deploy and wire token handler
         | 
| 505 | 
            -
                     | 
| 506 | 
            -
             | 
| 507 | 
            -
             | 
| 508 | 
            -
             | 
| 509 | 
            -
             | 
| 510 | 
            -
             | 
| 511 | 
            -
             | 
| 512 | 
            -
             | 
| 513 | 
            -
             | 
| 514 | 
            -
             | 
| 515 | 
            -
             | 
| 516 | 
            -
             | 
| 520 | 
            +
                    {
         | 
| 521 | 
            +
                        IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
         | 
| 522 | 
            +
                        componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
         | 
| 523 | 
            +
                            address(getRegistry()),
         | 
| 524 | 
            +
                            componentAddress, // initially, component is its own wallet
         | 
| 525 | 
            +
                            token, 
         | 
| 526 | 
            +
                            address(instanceAdmin.authority()));
         | 
| 527 | 
            +
                        
         | 
| 528 | 
            +
                        // register component with instance
         | 
| 529 | 
            +
                        instanceStore.createComponent(
         | 
| 530 | 
            +
                            componentNftId, 
         | 
| 531 | 
            +
                            componentInfo);
         | 
| 532 | 
            +
                    }
         | 
| 517 533 |  | 
| 518 534 | 
             
                    // link component contract to nft id
         | 
| 519 535 | 
             
                    component.linkToRegisteredNftId();
         | 
| 520 536 |  | 
| 521 537 | 
             
                    // authorize
         | 
| 522 | 
            -
                    instanceAdmin.initializeComponentAuthorization( | 
| 538 | 
            +
                    instanceAdmin.initializeComponentAuthorization(componentAddress, requiredType);
         | 
| 523 539 |  | 
| 524 | 
            -
                    emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType,  | 
| 540 | 
            +
                    emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, componentAddress, token, initialOwner);
         | 
| 525 541 | 
             
                }
         | 
| 526 542 |  | 
| 527 543 |  | 
| @@ -3,6 +3,7 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
         | 
| 5 5 | 
             
            import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
         | 
| 6 | 
            +
            import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
         | 
| 6 7 |  | 
| 7 8 | 
             
            // import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
         | 
| 8 9 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| @@ -170,6 +171,33 @@ library ContractLib { | |
| 170 171 | 
             
                }
         | 
| 171 172 |  | 
| 172 173 |  | 
| 174 | 
            +
                function isAccessManaged(address target)
         | 
| 175 | 
            +
                    public
         | 
| 176 | 
            +
                    view
         | 
| 177 | 
            +
                    returns (bool)
         | 
| 178 | 
            +
                {
         | 
| 179 | 
            +
                    if (!isContract(target)) {
         | 
| 180 | 
            +
                        return false;
         | 
| 181 | 
            +
                    }
         | 
| 182 | 
            +
             | 
| 183 | 
            +
                    (bool success, ) = target.staticcall(
         | 
| 184 | 
            +
                        abi.encodeWithSelector(
         | 
| 185 | 
            +
                            IAccessManaged.authority.selector));
         | 
| 186 | 
            +
             | 
| 187 | 
            +
                    return success;
         | 
| 188 | 
            +
                }
         | 
| 189 | 
            +
             | 
| 190 | 
            +
             | 
| 191 | 
            +
                function isRegistered(address registry, address caller, ObjectType expectedType) public view returns (bool) {
         | 
| 192 | 
            +
                    NftId nftId = IRegistry(registry).getNftIdForAddress(caller);
         | 
| 193 | 
            +
                    if (nftId.eqz()) {
         | 
| 194 | 
            +
                        return false;
         | 
| 195 | 
            +
                    }
         | 
| 196 | 
            +
             | 
| 197 | 
            +
                    return IRegistry(registry).getObjectInfo(nftId).objectType == expectedType;
         | 
| 198 | 
            +
                }
         | 
| 199 | 
            +
             | 
| 200 | 
            +
             | 
| 173 201 | 
             
                function isRegistry(address registry) public view returns (bool) {
         | 
| 174 202 | 
             
                    if (!isContract(registry)) {
         | 
| 175 203 | 
             
                        return false;
         | 
| @@ -15,9 +15,6 @@ interface IComponent is | |
| 15 15 | 
             
                IRegisterable,
         | 
| 16 16 | 
             
                ITransferInterceptor
         | 
| 17 17 | 
             
            {
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                error ErrorComponentTokenInvalid(address token);
         | 
| 20 | 
            -
             | 
| 21 18 | 
             
                error ErrorComponentProductNftIdZero();
         | 
| 22 19 | 
             
                error ErrorComponentProductNftIdNonzero();
         | 
| 23 20 | 
             
                error ErrorComponentNameLengthZero();
         | 
| @@ -16,6 +16,8 @@ import {VersionPart} from "../type/Version.sol"; | |
| 16 16 | 
             
            interface IComponentService is 
         | 
| 17 17 | 
             
                IService
         | 
| 18 18 | 
             
            {
         | 
| 19 | 
            +
                error ErrorComponentServiceTokenInvalid(address token);
         | 
| 20 | 
            +
             | 
| 19 21 | 
             
                error ErrorComponentServiceNotInstanceLinkedComponent(address component);
         | 
| 20 22 | 
             
                error ErrorComponentServiceSenderNotRegistered(address sender);
         | 
| 21 23 | 
             
                error ErrorComponentServiceNotComponent(address component);
         | 
| @@ -56,9 +58,9 @@ interface IComponentService is | |
| 56 58 | 
             
                    NftId nftId, 
         | 
| 57 59 | 
             
                    string feeName, 
         | 
| 58 60 | 
             
                    UFixed previousFractionalFee, 
         | 
| 59 | 
            -
                     | 
| 61 | 
            +
                    Amount previousFixedFee,
         | 
| 60 62 | 
             
                    UFixed newFractionalFee, 
         | 
| 61 | 
            -
                     | 
| 63 | 
            +
                    Amount newFixedFee
         | 
| 62 64 | 
             
                );
         | 
| 63 65 |  | 
| 64 66 | 
             
                //-------- component ----------------------------------------------------//
         | 
| @@ -67,14 +69,12 @@ interface IComponentService is | |
| 67 69 | 
             
                /// Reverts if the component's token handler wallet is not the token handler itself.
         | 
| 68 70 | 
             
                function approveTokenHandler(IERC20Metadata token, Amount amount) external;
         | 
| 69 71 |  | 
| 70 | 
            -
                /// @dev Sets the components associated wallet address
         | 
| 72 | 
            +
                /// @dev Sets the components associated wallet address.
         | 
| 73 | 
            +
                /// To set the wallet to the token handler contract, use address(0) as the new wallet adress.
         | 
| 71 74 | 
             
                function setWallet(address newWallet) external;
         | 
| 72 75 |  | 
| 73 | 
            -
                /// @dev Locks/Unlocks the  | 
| 74 | 
            -
                function  | 
| 75 | 
            -
             | 
| 76 | 
            -
                /// @dev Locks/Unlocks the given component - call from component
         | 
| 77 | 
            -
                function setLockedFromComponent(address componentAddress, bool locked) external;
         | 
| 76 | 
            +
                /// @dev Locks/Unlocks the calling component.
         | 
| 77 | 
            +
                function setLocked(bool locked) external;
         | 
| 78 78 |  | 
| 79 79 | 
             
                /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
         | 
| 80 80 | 
             
                /// @param withdrawAmount the amount to withdraw
         | 
| @@ -87,7 +87,7 @@ interface IComponentService is | |
| 87 87 | 
             
                //-------- product ------------------------------------------------------//
         | 
| 88 88 |  | 
| 89 89 | 
             
                /// @dev Registers the specified product component for the instance (sender)
         | 
| 90 | 
            -
                function registerProduct(address product) external returns (NftId productNftId);
         | 
| 90 | 
            +
                function registerProduct(address product, address token) external returns (NftId productNftId);
         | 
| 91 91 |  | 
| 92 92 | 
             
                function setProductFees(
         | 
| 93 93 | 
             
                    Fee memory productFee, // product fee on net premium
         | 
| @@ -11,13 +11,21 @@ contract InitializableERC165 is | |
| 11 11 | 
             
                mapping(bytes4 => bool) private _isSupported;
         | 
| 12 12 |  | 
| 13 13 | 
             
                // @dev initializes with support for ERC165
         | 
| 14 | 
            -
                function  | 
| 14 | 
            +
                function __ERC165_init() internal onlyInitializing() {
         | 
| 15 | 
            +
                    _initializeERC165();
         | 
| 16 | 
            +
                }
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                function _initializeERC165() internal {
         | 
| 15 19 | 
             
                    _isSupported[type(IERC165).interfaceId] = true;
         | 
| 16 20 | 
             
                }
         | 
| 17 21 |  | 
| 18 22 | 
             
                // @dev register support for provided interfaceId
         | 
| 19 23 | 
             
                // includes initialization for ERC165_ID if not yet done
         | 
| 20 24 | 
             
                function _registerInterface(bytes4 interfaceId) internal onlyInitializing() {
         | 
| 25 | 
            +
                    _registerInterfaceNotInitializing(interfaceId);
         | 
| 26 | 
            +
                }
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                function _registerInterfaceNotInitializing(bytes4 interfaceId) internal{
         | 
| 21 29 | 
             
                    _isSupported[interfaceId] = true;
         | 
| 22 30 | 
             
                }
         | 
| 23 31 |  | 
| @@ -71,7 +71,6 @@ abstract contract InstanceLinkedComponent is | |
| 71 71 | 
             
                    address registry,
         | 
| 72 72 | 
             
                    NftId parentNftId,
         | 
| 73 73 | 
             
                    string memory name,
         | 
| 74 | 
            -
                    address token,
         | 
| 75 74 | 
             
                    ObjectType componentType,
         | 
| 76 75 | 
             
                    IAuthorization authorization,
         | 
| 77 76 | 
             
                    bool isInterceptor,
         | 
| @@ -99,7 +98,6 @@ abstract contract InstanceLinkedComponent is | |
| 99 98 | 
             
                        registry, 
         | 
| 100 99 | 
             
                        parentNftId, 
         | 
| 101 100 | 
             
                        name, 
         | 
| 102 | 
            -
                        token,
         | 
| 103 101 | 
             
                        componentType, 
         | 
| 104 102 | 
             
                        isInterceptor, 
         | 
| 105 103 | 
             
                        initialOwner, 
         |