@etherisc/gif-next 0.0.2-f18fb8b-243 → 0.0.2-f1f3b2c-994
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 +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +81 -63
- 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/IAccessAdmin.sol/IAccessAdmin.json +48 -30
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +21 -2
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +72 -9
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -248
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +64 -222
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +228 -217
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +64 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -31
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1512 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1999 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1432 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1192 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1566 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2001 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -6
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -5
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +17 -106
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +146 -112
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +437 -129
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +44 -151
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +285 -228
- 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 +45 -4
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -229
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +18 -18
- 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 +45 -31
- 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 +42 -213
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +94 -274
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +458 -161
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +154 -86
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +229 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +87 -88
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +360 -171
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +84 -270
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +492 -333
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +98 -82
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +62 -242
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +263 -181
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +104 -100
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +147 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +295 -119
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +62 -57
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +406 -321
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +104 -100
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +118 -265
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +62 -242
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +274 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
- 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 +493 -80
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +263 -145
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -313
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +46 -5
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1061 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +70 -12
- 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 +15 -205
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +247 -161
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +105 -95
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +15 -20
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +34 -31
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- 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/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- 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 +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +34 -216
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +41 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +41 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +42 -21
- 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 +73 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +100 -256
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +45 -4
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +176 -130
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- 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 +61 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- 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 +7 -2
- 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/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 +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- 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 +60 -4
- 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/Seconds.sol/SecondsLib.json +50 -2
- 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/StateId.sol/StateIdLib.json +15 -2
- 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/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
- 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 +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +31 -24
- package/contracts/authorization/Authorization.sol +5 -2
- package/contracts/authorization/IAccessAdmin.sol +3 -2
- package/contracts/authorization/IServiceAuthorization.sol +4 -2
- package/contracts/authorization/ServiceAuthorization.sol +27 -11
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +23 -11
- package/contracts/distribution/DistributionService.sol +76 -42
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +8 -4
- package/contracts/distribution/IDistributionService.sol +18 -2
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +411 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +11 -34
- package/contracts/instance/IInstanceService.sol +5 -5
- package/contracts/instance/Instance.sol +13 -38
- package/contracts/instance/InstanceAdmin.sol +31 -9
- package/contracts/instance/InstanceAuthorizationV3.sol +16 -14
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +71 -49
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +12 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +4 -8
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +17 -7
- package/contracts/oracle/OracleService.sol +11 -8
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +11 -2
- package/contracts/pool/BundleService.sol +221 -56
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +42 -5
- package/contracts/pool/IPoolComponent.sol +24 -8
- package/contracts/pool/IPoolService.sol +57 -36
- package/contracts/pool/Pool.sol +72 -30
- package/contracts/pool/PoolService.sol +240 -129
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +62 -65
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +3 -32
- package/contracts/product/BasicProductAuthorization.sol +3 -0
- package/contracts/product/ClaimService.sol +254 -115
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -32
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +18 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +404 -193
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +46 -46
- package/contracts/product/PricingServiceManager.sol +5 -8
- package/contracts/product/Product.sol +90 -50
- package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +65 -19
- package/contracts/registry/IRegistryService.sol +0 -9
- package/contracts/registry/Registry.sol +340 -211
- package/contracts/registry/RegistryAdmin.sol +155 -72
- package/contracts/registry/RegistryService.sol +59 -66
- package/contracts/registry/RegistryServiceManager.sol +4 -4
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +496 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +13 -15
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +38 -43
- package/contracts/shared/ComponentService.sol +88 -28
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +2 -3
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +7 -4
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +26 -6
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +13 -2
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +7 -7
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +19 -15
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +3 -3
- package/contracts/staking/IStakingService.sol +12 -5
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +27 -42
- package/contracts/staking/StakingManager.sol +10 -12
- package/contracts/staking/StakingReader.sol +23 -20
- package/contracts/staking/StakingService.sol +10 -14
- package/contracts/staking/StakingServiceManager.sol +4 -4
- package/contracts/staking/StakingStore.sol +12 -22
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +19 -18
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +33 -10
- package/contracts/type/Version.sol +3 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +70 -38
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -487
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            {
         | 
| 2 2 | 
             
              "_format": "hh-sol-artifact-1",
         | 
| 3 3 | 
             
              "contractName": "UpgradableProxyWithAdmin",
         | 
| 4 | 
            -
              "sourceName": "contracts/ | 
| 4 | 
            +
              "sourceName": "contracts/upgradeability/UpgradableProxyWithAdmin.sol",
         | 
| 5 5 | 
             
              "abi": [
         | 
| 6 6 | 
             
                {
         | 
| 7 7 | 
             
                  "inputs": [
         | 
| @@ -122,8 +122,8 @@ | |
| 122 122 | 
             
                  "type": "function"
         | 
| 123 123 | 
             
                }
         | 
| 124 124 | 
             
              ],
         | 
| 125 | 
            -
              "bytecode": " | 
| 126 | 
            -
              "deployedBytecode": " | 
| 125 | 
            +
              "bytecode": "0x60a060405234801561000f575f80fd5b50604051610e4c380380610e4c83398101604081905261002e9161037c565b828282828161003d828261009e565b50508160405161004c90610340565b6001600160a01b039091168152602001604051809103905ff080158015610075573d5f803e3d5ffd5b506001600160a01b031660805261009361008e60805190565b6100fc565b505050505050610463565b6100a782610169565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100f0576100eb82826101e7565b505050565b6100f861025a565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61013b5f80516020610e2c833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16101668161027b565b50565b806001600160a01b03163b5f036101a357604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b031684604051610203919061044d565b5f60405180830381855af49150503d805f811461023b576040519150601f19603f3d011682016040523d82523d5f602084013e610240565b606091505b5090925090506102518583836102b8565b95945050505050565b34156102795760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b0381166102a457604051633173bdd160e11b81525f600482015260240161019a565b805f80516020610e2c8339815191526101c6565b6060826102cd576102c882610317565b610310565b81511580156102e457506001600160a01b0384163b155b1561030d57604051639996b31560e01b81526001600160a01b038516600482015260240161019a565b50805b9392505050565b8051156103275780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104ef8061093d83390190565b80516001600160a01b0381168114610363575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561038e575f80fd5b6103978461034d565b92506103a56020850161034d565b60408501519092506001600160401b038111156103c0575f80fd5b8401601f810186136103d0575f80fd5b80516001600160401b038111156103e9576103e9610368565b604051601f8201601f19908116603f011681016001600160401b038111828210171561041757610417610368565b60405281815282820160200188101561042e575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516104bd6104805f395f818160350152607201526104bd5ff3fe60806040526004361061001d575f3560e01c80638b3240a014610027575b610025610070565b005b348015610032575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006040516001600160a01b03909116815260200160405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100dc575f356001600160e01b03191663278f794360e11b146100d2576040516334ad5dbb60e21b815260040160405180910390fd5b6100da6100e9565b565b6100da610117565b905090565b5f806100f83660048184610365565b81019061010591906103a0565b915091506101138282610127565b5050565b6100da610122610181565b6101b3565b610130826101d1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561017957610174828261024c565b505050565b6101136102be565b5f6100e47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e8080156101cd573d5ff35b3d5ffd5b806001600160a01b03163b5f0361020b57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102689190610471565b5f60405180830381855af49150503d805f81146102a0576040519150601f19603f3d011682016040523d82523d5f602084013e6102a5565b606091505b50915091506102b58583836102dd565b95945050505050565b34156100da5760405163b398979f60e01b815260040160405180910390fd5b6060826102f2576102ed8261033c565b610335565b815115801561030957506001600160a01b0384163b155b1561033257604051639996b31560e01b81526001600160a01b0385166004820152602401610202565b50805b9392505050565b80511561034c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610373575f80fd5b8386111561037f575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156103b1575f80fd5b82356001600160a01b03811681146103c7575f80fd5b9150602083013567ffffffffffffffff8111156103e2575f80fd5b8301601f810185136103f2575f80fd5b803567ffffffffffffffff81111561040c5761040c61038c565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561043b5761043b61038c565b604052818152828201602001871015610452575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212205f12e4d638be8d591db7c67d942f3e9eeb14e9e44f78ba8cddaca37631bdc49764736f6c634300081a0033608060405234801561000f575f80fd5b506040516104ef3803806104ef83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103fa806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610365565b3480156100e9575f80fd5b506100616100f836600461037e565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610399565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff8111156102a8575f80fd5b8401601f810186136102b8575f80fd5b803567ffffffffffffffff8111156102d2576102d261024c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103015761030161024c565b604052818152828201602001881015610318575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6103776020830184610337565b9392505050565b5f6020828403121561038e575f80fd5b813561037781610238565b6001600160a01b03831681526040602082018190525f906103bc90830184610337565b94935050505056fea264697066735822122063012ab3c3421087c307802be7295f03bec95db9eea702a4c2db9595befa162464736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103",
         | 
| 126 | 
            +
              "deployedBytecode": "0x60806040526004361061001d575f3560e01c80638b3240a014610027575b610025610070565b005b348015610032575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006040516001600160a01b03909116815260200160405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100dc575f356001600160e01b03191663278f794360e11b146100d2576040516334ad5dbb60e21b815260040160405180910390fd5b6100da6100e9565b565b6100da610117565b905090565b5f806100f83660048184610365565b81019061010591906103a0565b915091506101138282610127565b5050565b6100da610122610181565b6101b3565b610130826101d1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561017957610174828261024c565b505050565b6101136102be565b5f6100e47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e8080156101cd573d5ff35b3d5ffd5b806001600160a01b03163b5f0361020b57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102689190610471565b5f60405180830381855af49150503d805f81146102a0576040519150601f19603f3d011682016040523d82523d5f602084013e6102a5565b606091505b50915091506102b58583836102dd565b95945050505050565b34156100da5760405163b398979f60e01b815260040160405180910390fd5b6060826102f2576102ed8261033c565b610335565b815115801561030957506001600160a01b0384163b155b1561033257604051639996b31560e01b81526001600160a01b0385166004820152602401610202565b50805b9392505050565b80511561034c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610373575f80fd5b8386111561037f575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156103b1575f80fd5b82356001600160a01b03811681146103c7575f80fd5b9150602083013567ffffffffffffffff8111156103e2575f80fd5b8301601f810185136103f2575f80fd5b803567ffffffffffffffff81111561040c5761040c61038c565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561043b5761043b61038c565b604052818152828201602001871015610452575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212205f12e4d638be8d591db7c67d942f3e9eeb14e9e44f78ba8cddaca37631bdc49764736f6c634300081a0033",
         | 
| 127 127 | 
             
              "linkReferences": {},
         | 
| 128 128 | 
             
              "deployedLinkReferences": {}
         | 
| 129 129 | 
             
            }
         | 
| @@ -6,11 +6,12 @@ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet | |
| 6 6 | 
             
            import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
         | 
| 7 7 |  | 
| 8 8 | 
             
            import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
         | 
| 9 | 
            +
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 9 10 | 
             
            import {IAccessAdmin} from "./IAccessAdmin.sol";
         | 
| 10 11 | 
             
            import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
         | 
| 11 12 | 
             
            import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
         | 
| 12 13 | 
             
            import {Str, StrLib} from "../type/String.sol";
         | 
| 13 | 
            -
            import { | 
| 14 | 
            +
            import {TimestampLib} from "../type/Timestamp.sol";
         | 
| 14 15 |  | 
| 15 16 |  | 
| 16 17 | 
             
            /**
         | 
| @@ -113,7 +114,6 @@ contract AccessAdmin is | |
| 113 114 |  | 
| 114 115 | 
             
                    _setAuthority(address(_authority)); // set authority for oz access managed
         | 
| 115 116 | 
             
                    _createAdminAndPublicRoles();
         | 
| 116 | 
            -
                    _disableInitializers();
         | 
| 117 117 | 
             
                }
         | 
| 118 118 |  | 
| 119 119 | 
             
                //--- view functions for roles ------------------------------------------//
         | 
| @@ -219,17 +219,18 @@ contract AccessAdmin is | |
| 219 219 | 
             
                            selector.toBytes4()));
         | 
| 220 220 | 
             
                }
         | 
| 221 221 |  | 
| 222 | 
            -
                 | 
| 223 | 
            -
             | 
| 224 | 
            -
             | 
| 225 | 
            -
             | 
| 222 | 
            +
                // TODO cleanup
         | 
| 223 | 
            +
                // function isAccessManaged(address target) public view returns (bool) {
         | 
| 224 | 
            +
                //     if (!_isContract(target)) {
         | 
| 225 | 
            +
                //         return false;
         | 
| 226 | 
            +
                //     }
         | 
| 226 227 |  | 
| 227 | 
            -
             | 
| 228 | 
            -
             | 
| 229 | 
            -
             | 
| 228 | 
            +
                //     (bool success, ) = target.staticcall(
         | 
| 229 | 
            +
                //         abi.encodeWithSelector(
         | 
| 230 | 
            +
                //             AccessManagedUpgradeable.authority.selector));
         | 
| 230 231 |  | 
| 231 | 
            -
             | 
| 232 | 
            -
                }
         | 
| 232 | 
            +
                //     return success;
         | 
| 233 | 
            +
                // }
         | 
| 233 234 |  | 
| 234 235 | 
             
                function canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
         | 
| 235 236 | 
             
                    (can, ) = _authority.canCall(caller, target, selector.toBytes4());
         | 
| @@ -349,7 +350,6 @@ contract AccessAdmin is | |
| 349 350 | 
             
                    internal
         | 
| 350 351 | 
             
                {
         | 
| 351 352 | 
             
                    RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
         | 
| 352 | 
            -
                    FunctionInfo[] memory functions;
         | 
| 353 353 |  | 
| 354 354 | 
             
                    // setup admin role
         | 
| 355 355 | 
             
                    _createRoleUnchecked(
         | 
| @@ -376,6 +376,7 @@ contract AccessAdmin is | |
| 376 376 | 
             
                /// @dev check if target exists and reverts if it doesn't
         | 
| 377 377 | 
             
                function _checkTarget(address target)
         | 
| 378 378 | 
             
                    internal
         | 
| 379 | 
            +
                    view
         | 
| 379 380 | 
             
                {
         | 
| 380 381 | 
             
                    if (_targetInfo[target].createdAt.eqz()) {
         | 
| 381 382 | 
             
                        revert ErrorTargetUnknown(target);
         | 
| @@ -410,10 +411,14 @@ contract AccessAdmin is | |
| 410 411 | 
             
                    }
         | 
| 411 412 |  | 
| 412 413 | 
             
                    // check account is contract for contract role
         | 
| 413 | 
            -
                     | 
| 414 | 
            -
             | 
| 414 | 
            +
                    if (
         | 
| 415 | 
            +
                        _roleInfo[roleId].roleType == RoleType.Contract &&
         | 
| 416 | 
            +
                        account.code.length == 0 // will fail in account's constructor
         | 
| 417 | 
            +
                    ) {
         | 
| 418 | 
            +
                        revert ErrorRoleMemberNotContract(roleId, account);
         | 
| 415 419 | 
             
                    }
         | 
| 416 420 |  | 
| 421 | 
            +
                    // TODO check account already have roleId
         | 
| 417 422 | 
             
                    _roleMembers[roleId].add(account);
         | 
| 418 423 | 
             
                    _authority.grantRole(
         | 
| 419 424 | 
             
                        RoleId.unwrap(roleId), 
         | 
| @@ -431,9 +436,10 @@ contract AccessAdmin is | |
| 431 436 |  | 
| 432 437 | 
             
                    // check role removal is permitted
         | 
| 433 438 | 
             
                    if (_roleInfo[roleId].roleType == RoleType.Contract) {
         | 
| 434 | 
            -
                        revert  | 
| 439 | 
            +
                        revert ErrorRoleMemberRemovalDisabled(roleId, account);
         | 
| 435 440 | 
             
                    }
         | 
| 436 441 |  | 
| 442 | 
            +
                    // TODO check account have roleId?
         | 
| 437 443 | 
             
                    _roleMembers[roleId].remove(account);
         | 
| 438 444 | 
             
                    _authority.revokeRole(
         | 
| 439 445 | 
             
                        RoleId.unwrap(roleId), 
         | 
| @@ -445,6 +451,7 @@ contract AccessAdmin is | |
| 445 451 |  | 
| 446 452 | 
             
                function _checkRoleId(RoleId roleId)
         | 
| 447 453 | 
             
                    internal
         | 
| 454 | 
            +
                    view
         | 
| 448 455 | 
             
                {
         | 
| 449 456 | 
             
                    if (_roleInfo[roleId].createdAt.eqz()) {
         | 
| 450 457 | 
             
                        revert ErrorRoleUnknown(roleId);
         | 
| @@ -548,7 +555,7 @@ contract AccessAdmin is | |
| 548 555 | 
             
                    }
         | 
| 549 556 |  | 
| 550 557 | 
             
                    // check target is an access managed contract
         | 
| 551 | 
            -
                    if (!isAccessManaged(target)) {
         | 
| 558 | 
            +
                    if (!ContractLib.isAccessManaged(target)) {
         | 
| 552 559 | 
             
                        revert ErrorTargetNotAccessManaged(target);
         | 
| 553 560 | 
             
                    }
         | 
| 554 561 |  | 
| @@ -576,16 +583,16 @@ contract AccessAdmin is | |
| 576 583 | 
             
                    emit LogTargetCreated(target, targetName);
         | 
| 577 584 | 
             
                }
         | 
| 578 585 |  | 
| 579 | 
            -
                function  | 
| 586 | 
            +
                function _setTargetClosed(address target, bool locked)
         | 
| 580 587 | 
             
                    internal
         | 
| 581 | 
            -
                    view 
         | 
| 582 | 
            -
                    returns (bool)
         | 
| 583 588 | 
             
                {
         | 
| 584 | 
            -
                     | 
| 585 | 
            -
             | 
| 586 | 
            -
             | 
| 589 | 
            +
                    _checkTarget(target);
         | 
| 590 | 
            +
             | 
| 591 | 
            +
                    // target locked/unlocked already
         | 
| 592 | 
            +
                    if(_authority.isTargetClosed(target) == locked) {
         | 
| 593 | 
            +
                        revert ErrorTargetAlreadyLocked(target, locked);
         | 
| 587 594 | 
             
                    }
         | 
| 588 | 
            -
             | 
| 595 | 
            +
             | 
| 596 | 
            +
                    _authority.setTargetClosed(target, locked);
         | 
| 589 597 | 
             
                }
         | 
| 590 | 
            -
                
         | 
| 591 598 | 
             
            }
         | 
| @@ -129,12 +129,15 @@ contract Authorization | |
| 129 129 | 
             
                 }
         | 
| 130 130 |  | 
| 131 131 | 
             
                 function _addComponentTargetWithRole(ObjectType componentType) internal {
         | 
| 132 | 
            +
                      _addComponentTargetWithRole(componentType, 0);
         | 
| 133 | 
            +
                 }
         | 
| 134 | 
            +
             | 
| 135 | 
            +
                 function _addComponentTargetWithRole(ObjectType componentType, uint64 index) internal {
         | 
| 132 136 | 
             
                      _addTargetWithRole(
         | 
| 133 137 | 
             
                           getTargetName(), 
         | 
| 134 | 
            -
                           RoleIdLib.toComponentRoleId(componentType,  | 
| 138 | 
            +
                           RoleIdLib.toComponentRoleId(componentType, index),
         | 
| 135 139 | 
             
                           _toTargetRoleName(
         | 
| 136 140 | 
             
                                getTargetName()));
         | 
| 137 | 
            -
             | 
| 138 141 | 
             
                 }
         | 
| 139 142 |  | 
| 140 143 | 
             
                 /// @dev Add a contract role for the provided role id and name.
         | 
| @@ -43,7 +43,8 @@ interface IAccessAdmin is | |
| 43 43 | 
             
                error ErrorRoleIsLocked(RoleId roleId);
         | 
| 44 44 | 
             
                error ErrorRoleIsDisabled(RoleId roleId);
         | 
| 45 45 | 
             
                error ErrorRoleMembersLimitReached(RoleId roleId, uint256 memberCountLimit);
         | 
| 46 | 
            -
                error  | 
| 46 | 
            +
                error ErrorRoleMemberNotContract(RoleId roleId, address notContract);
         | 
| 47 | 
            +
                error ErrorRoleMemberRemovalDisabled(RoleId roleId, address expectedMember);
         | 
| 47 48 |  | 
| 48 49 | 
             
                // create target
         | 
| 49 50 | 
             
                error ErrorTargetAlreadyCreated(address target, string name);
         | 
| @@ -54,6 +55,7 @@ interface IAccessAdmin is | |
| 54 55 |  | 
| 55 56 | 
             
                // lock target
         | 
| 56 57 | 
             
                error ErrorTagetNotLockable();
         | 
| 58 | 
            +
                error ErrorTargetAlreadyLocked(address target, bool isLocked);
         | 
| 57 59 |  | 
| 58 60 | 
             
                // authorize target functions
         | 
| 59 61 | 
             
                error ErrorAuthorizeForAdminRoleInvalid(address target);
         | 
| @@ -131,6 +133,5 @@ interface IAccessAdmin is | |
| 131 133 |  | 
| 132 134 | 
             
                function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) external view returns (RoleInfo memory);
         | 
| 133 135 | 
             
                function toFunction(bytes4 selector, string memory name) external view returns (FunctionInfo memory);
         | 
| 134 | 
            -
                function isAccessManaged(address target) external view returns (bool);
         | 
| 135 136 | 
             
                function deployer() external view returns (address);
         | 
| 136 137 | 
             
            }
         | 
| @@ -1,17 +1,19 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
         | 
| 5 | 
            +
             | 
| 4 6 | 
             
            import {IAccess} from "../authorization/IAccess.sol";
         | 
| 5 7 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 6 8 | 
             
            import {VersionPart} from "../type/Version.sol";
         | 
| 7 9 |  | 
| 8 | 
            -
            interface IServiceAuthorization {
         | 
| 10 | 
            +
            interface IServiceAuthorization is IERC165 {
         | 
| 9 11 |  | 
| 10 12 | 
             
                 /// @dev Returns the commit hash representing the deployed release
         | 
| 11 13 | 
             
                 function getCommitHash()
         | 
| 12 14 | 
             
                      external
         | 
| 13 15 | 
             
                      view
         | 
| 14 | 
            -
                      returns( | 
| 16 | 
            +
                      returns(bytes memory commitHash);
         | 
| 15 17 |  | 
| 16 18 | 
             
                 /// @dev Returns the release (VersionPart) for which the service authorizations are defined by this contract.
         | 
| 17 19 | 
             
                 function getRelease()
         | 
| @@ -1,6 +1,8 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
         | 
| 5 | 
            +
             | 
| 4 6 | 
             
            import {IAccess} from "../authorization/IAccess.sol";
         | 
| 5 7 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 6 8 | 
             
            import {IServiceAuthorization} from "./IServiceAuthorization.sol";
         | 
| @@ -10,30 +12,36 @@ import {TimestampLib} from "../type/Timestamp.sol"; | |
| 10 12 | 
             
            import {VersionPart, VersionPartLib} from "../type/Version.sol";
         | 
| 11 13 |  | 
| 12 14 | 
             
            /// @dev Base contract for release specific service authorization contracts.
         | 
| 13 | 
            -
            contract ServiceAuthorization
         | 
| 14 | 
            -
                  | 
| 15 | 
            +
            contract ServiceAuthorization is 
         | 
| 16 | 
            +
                 IServiceAuthorization
         | 
| 15 17 | 
             
            {
         | 
| 16 | 
            -
                 uint256 public constant  | 
| 18 | 
            +
                 uint256 public constant COMMIT_HASH_LENGTH = 40;
         | 
| 19 | 
            +
                 uint256 public constant GIF_INITIAL_VERSION = 3;
         | 
| 17 20 |  | 
| 18 | 
            -
                  | 
| 21 | 
            +
                 uint256 public immutable VERSION;
         | 
| 22 | 
            +
                 bytes public COMMIT_HASH;
         | 
| 19 23 |  | 
| 20 24 | 
             
                 ObjectType[] internal _serviceDomains;
         | 
| 21 25 | 
             
                 mapping(ObjectType domain => address service) internal _serviceAddress;
         | 
| 22 26 | 
             
                 mapping(ObjectType domain => ObjectType[] authorizedDomains) internal _authorizedDomains;
         | 
| 23 27 | 
             
                 mapping(ObjectType domain => mapping(ObjectType authorizedDomain => IAccess.FunctionInfo[] functions)) internal _authorizedFunctions;
         | 
| 24 28 |  | 
| 25 | 
            -
                 constructor( | 
| 26 | 
            -
                       | 
| 29 | 
            +
                 constructor(bytes memory commitHash, uint256 version) {
         | 
| 30 | 
            +
                      assert(commitHash.length == COMMIT_HASH_LENGTH);
         | 
| 31 | 
            +
                      assert(version >= GIF_INITIAL_VERSION);
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                      COMMIT_HASH = commitHash;
         | 
| 34 | 
            +
                      VERSION = version;
         | 
| 27 35 | 
             
                      _setupDomains();
         | 
| 28 36 | 
             
                      _setupDomainAuthorizations();
         | 
| 29 37 | 
             
                 }
         | 
| 30 38 |  | 
| 31 | 
            -
                 function getCommitHash() external view returns( | 
| 32 | 
            -
                      return  | 
| 39 | 
            +
                 function getCommitHash() external view returns(bytes memory commitHash) {
         | 
| 40 | 
            +
                      return COMMIT_HASH;
         | 
| 33 41 | 
             
                 }
         | 
| 34 42 |  | 
| 35 43 | 
             
                 function getRelease() external view returns(VersionPart release) {
         | 
| 36 | 
            -
                      return VersionPartLib.toVersionPart( | 
| 44 | 
            +
                      return VersionPartLib.toVersionPart(VERSION);
         | 
| 37 45 | 
             
                 }
         | 
| 38 46 |  | 
| 39 47 | 
             
                 function getServiceDomains() external view returns(ObjectType[] memory serviceDomains) {
         | 
| @@ -56,6 +64,15 @@ contract ServiceAuthorization | |
| 56 64 | 
             
                      return _authorizedFunctions[serviceDomain][authorizedDomain];
         | 
| 57 65 | 
             
                 }
         | 
| 58 66 |  | 
| 67 | 
            +
                 // ERC165
         | 
| 68 | 
            +
                 function supportsInterface(bytes4 interfaceId) public pure returns (bool) {
         | 
| 69 | 
            +
                      return (
         | 
| 70 | 
            +
                           interfaceId == type(IServiceAuthorization).interfaceId || 
         | 
| 71 | 
            +
                           interfaceId == type(IERC165).interfaceId
         | 
| 72 | 
            +
                      );
         | 
| 73 | 
            +
                 }
         | 
| 74 | 
            +
             | 
| 75 | 
            +
             | 
| 59 76 | 
             
                 /// @dev Overwrite this function for a specific realease.
         | 
| 60 77 | 
             
                 function _setupDomains() internal virtual {}
         | 
| 61 78 |  | 
| @@ -86,5 +103,4 @@ contract ServiceAuthorization | |
| 86 103 | 
             
                                name: StrLib.toStr(name),
         | 
| 87 104 | 
             
                                createdAt: TimestampLib.blockTimestamp()}));
         | 
| 88 105 | 
             
                 }
         | 
| 89 | 
            -
            }
         | 
| 90 | 
            -
             | 
| 106 | 
            +
            }
         | 
| @@ -1,25 +1,14 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {COMPONENT, DISTRIBUTION} from "../type/ObjectType.sol";
         | 
| 5 4 | 
             
            import {Distribution} from "./Distribution.sol";
         | 
| 6 5 | 
             
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 7 | 
            -
            import { | 
| 8 | 
            -
            import { | 
| 9 | 
            -
            import { | 
| 10 | 
            -
            import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
         | 
| 11 | 
            -
            import {Fee, FeeLib} from "../type/Fee.sol";
         | 
| 12 | 
            -
            import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
         | 
| 13 | 
            -
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 14 | 
            -
            import {IDistribution} from "../instance/module/IDistribution.sol";
         | 
| 15 | 
            -
            import {IDistributionComponent} from "./IDistributionComponent.sol";
         | 
| 16 | 
            -
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 17 | 
            -
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 18 | 
            -
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 6 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 7 | 
            +
            import {ReferralId} from "../type/Referral.sol";
         | 
| 8 | 
            +
            import {Fee} from "../type/Fee.sol";
         | 
| 19 9 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 20 10 | 
             
            import {DistributorType} from "../type/DistributorType.sol";
         | 
| 21 | 
            -
            import {Timestamp | 
| 22 | 
            -
            import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
         | 
| 11 | 
            +
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 23 12 |  | 
| 24 13 |  | 
| 25 14 | 
             
            contract BasicDistribution is
         | 
| @@ -3,10 +3,11 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {Authorization} from "../authorization/Authorization.sol";
         | 
| 5 5 | 
             
            import {BasicDistribution} from "./BasicDistribution.sol"; 
         | 
| 6 | 
            +
            import {Distribution} from "./Distribution.sol";
         | 
| 6 7 | 
             
            import {DISTRIBUTION} from "../type/ObjectType.sol";
         | 
| 7 8 | 
             
            import {IAccess} from "../authorization/IAccess.sol";
         | 
| 9 | 
            +
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         | 
| 8 10 | 
             
            import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
         | 
| 9 | 
            -
            import {RoleId} from "../type/RoleId.sol";
         | 
| 10 11 |  | 
| 11 12 |  | 
| 12 13 | 
             
            contract BasicDistributionAuthorization
         | 
| @@ -38,6 +39,9 @@ contract BasicDistributionAuthorization | |
| 38 39 | 
             
                      _authorize(functions, BasicDistribution.createDistributor.selector, "createDistributor");
         | 
| 39 40 | 
             
                      _authorize(functions, BasicDistribution.updateDistributorType.selector, "updateDistributorType");
         | 
| 40 41 | 
             
                      _authorize(functions, BasicDistribution.createReferral.selector, "createReferral");
         | 
| 42 | 
            +
                      
         | 
| 43 | 
            +
                      _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
         | 
| 44 | 
            +
                      _authorize(functions, Distribution.withdrawCommission.selector, "withdrawCommission");
         | 
| 41 45 | 
             
                 }
         | 
| 42 46 | 
             
            }
         | 
| 43 47 |  | 
| @@ -1,24 +1,19 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {Amount} from "../type/Amount.sol";
         | 
| 4 5 | 
             
            import {COMPONENT, DISTRIBUTION} from "../type/ObjectType.sol";
         | 
| 5 6 | 
             
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 6 7 | 
             
            import {IDistributionService} from "./IDistributionService.sol";
         | 
| 7 | 
            -
            import {IProductService} from "../product/IProductService.sol";
         | 
| 8 8 | 
             
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 9 9 | 
             
            import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
         | 
| 10 | 
            -
            import {Fee | 
| 10 | 
            +
            import {Fee} from "../type/Fee.sol";
         | 
| 11 11 | 
             
            import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
         | 
| 12 12 | 
             
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 13 | 
            -
            import {IDistribution} from "../instance/module/IDistribution.sol";
         | 
| 14 13 | 
             
            import {IDistributionComponent} from "./IDistributionComponent.sol";
         | 
| 15 | 
            -
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 16 | 
            -
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 17 | 
            -
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 18 14 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 19 15 | 
             
            import {DistributorType} from "../type/DistributorType.sol";
         | 
| 20 | 
            -
            import {Timestamp | 
| 21 | 
            -
            import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
         | 
| 16 | 
            +
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 22 17 |  | 
| 23 18 |  | 
| 24 19 | 
             
            abstract contract Distribution is
         | 
| @@ -41,13 +36,13 @@ abstract contract Distribution is | |
| 41 36 | 
             
                    _;
         | 
| 42 37 | 
             
                }
         | 
| 43 38 |  | 
| 44 | 
            -
             | 
| 45 39 | 
             
                function register()
         | 
| 46 40 | 
             
                    external
         | 
| 47 41 | 
             
                    virtual
         | 
| 48 42 | 
             
                    onlyOwner()
         | 
| 49 43 | 
             
                {
         | 
| 50 44 | 
             
                    _getDistributionStorage()._componentService.registerDistribution();
         | 
| 45 | 
            +
                    _approveTokenHandler(type(uint256).max);
         | 
| 51 46 | 
             
                }
         | 
| 52 47 |  | 
| 53 48 |  | 
| @@ -127,7 +122,18 @@ abstract contract Distribution is | |
| 127 122 | 
             
                    return true;
         | 
| 128 123 | 
             
                }
         | 
| 129 124 |  | 
| 130 | 
            -
             | 
| 125 | 
            +
                /// @inheritdoc IDistributionComponent
         | 
| 126 | 
            +
                function withdrawCommission(NftId distributorNftId, Amount amount) 
         | 
| 127 | 
            +
                    external 
         | 
| 128 | 
            +
                    virtual
         | 
| 129 | 
            +
                    restricted()
         | 
| 130 | 
            +
                    onlyDistributor()
         | 
| 131 | 
            +
                    onlyNftOwner(distributorNftId)
         | 
| 132 | 
            +
                    returns (Amount withdrawnAmount) 
         | 
| 133 | 
            +
                {
         | 
| 134 | 
            +
                    return _withdrawCommission(distributorNftId, amount);
         | 
| 135 | 
            +
                }
         | 
| 136 | 
            +
                    
         | 
| 131 137 | 
             
                function _initializeDistribution(
         | 
| 132 138 | 
             
                    address registry,
         | 
| 133 139 | 
             
                    NftId instanceNftId,
         | 
| @@ -158,7 +164,7 @@ abstract contract Distribution is | |
| 158 164 | 
             
                    $._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION())); 
         | 
| 159 165 | 
             
                    $._componentService = IComponentService(_getServiceAddress(COMPONENT())); 
         | 
| 160 166 |  | 
| 161 | 
            -
                     | 
| 167 | 
            +
                    _registerInterface(type(IDistributionComponent).interfaceId);
         | 
| 162 168 | 
             
                }
         | 
| 163 169 |  | 
| 164 170 | 
             
                /// @dev Sets the distribution fees to the provided values.
         | 
| @@ -266,6 +272,12 @@ abstract contract Distribution is | |
| 266 272 | 
             
                        data);
         | 
| 267 273 | 
             
                }
         | 
| 268 274 |  | 
| 275 | 
            +
                function _withdrawCommission(NftId distributorNftId, Amount amount) 
         | 
| 276 | 
            +
                    internal
         | 
| 277 | 
            +
                    returns (Amount withdrawnAmount) 
         | 
| 278 | 
            +
                {
         | 
| 279 | 
            +
                    return _getDistributionStorage()._distributionService.withdrawCommission(distributorNftId, amount);
         | 
| 280 | 
            +
                }
         | 
| 269 281 |  | 
| 270 282 | 
             
                function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
         | 
| 271 283 | 
             
                    // keep track of distributor nft owner
         |