@etherisc/gif-next 0.0.2-e83e4a5-207 → 0.0.2-e876b87-961
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 +32 -3
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
- 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 +60 -32
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +206 -309
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +134 -277
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +284 -223
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +116 -104
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +121 -92
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +149 -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 +1538 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -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 +1471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -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 +59 -37
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +34 -89
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +63 -130
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +167 -140
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -98
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +459 -136
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +82 -247
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +330 -243
- 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 +46 -5
- 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 +164 -280
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
- 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 +96 -80
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +106 -262
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +152 -330
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +498 -167
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +169 -89
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +258 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +131 -130
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +384 -179
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +142 -313
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +506 -334
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +111 -87
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +155 -281
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +303 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +323 -118
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +143 -97
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +444 -325
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +202 -307
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +155 -281
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -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 +322 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +42 -146
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +549 -80
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +285 -145
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- 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 +65 -236
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +546 -248
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +206 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -110
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -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 +55 -54
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +499 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +85 -80
- 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/INftOwnable.sol/INftOwnable.json +16 -0
- 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/IRegisterable.sol/IRegisterable.json +29 -0
- 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/IService.sol/IService.json +29 -0
- 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 +98 -265
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- 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 +22 -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 +58 -89
- 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 +47 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +407 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +132 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- 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 +174 -291
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +106 -91
- 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 +71 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +177 -131
- 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 +602 -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 +64 -59
- package/contracts/authorization/Authorization.sol +111 -40
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -3
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +6 -16
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +28 -26
- package/contracts/distribution/DistributionService.sol +128 -75
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +9 -5
- package/contracts/distribution/IDistributionService.sol +18 -2
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +73 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +415 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -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 +14 -34
- package/contracts/instance/IInstanceService.sol +5 -25
- package/contracts/instance/Instance.sol +32 -54
- package/contracts/instance/InstanceAdmin.sol +47 -34
- package/contracts/instance/InstanceAuthorizationV3.sol +24 -32
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +75 -105
- 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 +10 -11
- 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/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +21 -22
- package/contracts/oracle/OracleService.sol +47 -34
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +21 -31
- package/contracts/pool/BasicPoolAuthorization.sol +11 -3
- package/contracts/pool/BundleService.sol +267 -70
- 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 +56 -39
- package/contracts/pool/Pool.sol +73 -49
- package/contracts/pool/PoolService.sol +256 -164
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +70 -65
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +9 -38
- package/contracts/product/BasicProductAuthorization.sol +2 -0
- package/contracts/product/ClaimService.sol +316 -146
- 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 +10 -10
- package/contracts/product/IProductComponent.sol +24 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +419 -203
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +54 -54
- package/contracts/product/PricingServiceManager.sol +5 -8
- package/contracts/product/Product.sol +134 -71
- package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +68 -38
- package/contracts/registry/IRegistry.sol +69 -19
- package/contracts/registry/IRegistryService.sol +3 -10
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +354 -215
- package/contracts/registry/RegistryAdmin.sol +155 -72
- package/contracts/registry/RegistryService.sol +39 -64
- package/contracts/registry/RegistryServiceManager.sol +4 -4
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +501 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +52 -62
- package/contracts/shared/ComponentService.sol +299 -179
- package/contracts/shared/ComponentServiceHelperLib.sol +118 -0
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +23 -14
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +10 -6
- package/contracts/shared/IComponentService.sol +39 -20
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -17
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +85 -23
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +29 -9
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +19 -9
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +23 -22
- package/contracts/shared/TokenHandler.sol +144 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +3 -3
- package/contracts/staking/IStakingService.sol +12 -8
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +29 -45
- package/contracts/staking/StakingManager.sol +10 -12
- package/contracts/staking/StakingReader.sol +23 -20
- package/contracts/staking/StakingService.sol +25 -29
- 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/RoleId.sol +0 -12
- 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 +71 -38
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +4 -3
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- 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/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- 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
@@ -0,0 +1,38 @@
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
|
5
|
+
|
6
|
+
abstract contract ReleaseAccessManager is
|
7
|
+
AccessManager
|
8
|
+
{
|
9
|
+
bool private _releaseIsLocked;
|
10
|
+
|
11
|
+
function setReleaseLocked(bool locked)
|
12
|
+
external
|
13
|
+
onlyAuthorized()
|
14
|
+
{
|
15
|
+
_releaseIsLocked = locked;
|
16
|
+
}
|
17
|
+
|
18
|
+
function isReleaseLocked()
|
19
|
+
external
|
20
|
+
view
|
21
|
+
returns (bool isLocked)
|
22
|
+
{
|
23
|
+
return _releaseIsLocked;
|
24
|
+
}
|
25
|
+
|
26
|
+
function isTargetClosed(address target)
|
27
|
+
public
|
28
|
+
virtual override
|
29
|
+
view
|
30
|
+
returns (bool)
|
31
|
+
{
|
32
|
+
if (_releaseIsLocked) {
|
33
|
+
return true;
|
34
|
+
}
|
35
|
+
|
36
|
+
return super.isTargetClosed(target);
|
37
|
+
}
|
38
|
+
}
|
@@ -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
|
+
string 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(string memory commitHash) {
|
26
|
-
|
29
|
+
constructor(string memory commitHash, uint256 version) {
|
30
|
+
assert(bytes(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
39
|
function getCommitHash() external view returns(string memory commitHash) {
|
32
|
-
return
|
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,15 @@
|
|
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";
|
5
|
+
import {DISTRIBUTOR} from "../type/ObjectType.sol";
|
6
6
|
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";
|
7
|
+
import {NftId} from "../type/NftId.sol";
|
8
|
+
import {ReferralId} from "../type/Referral.sol";
|
9
|
+
import {Fee} from "../type/Fee.sol";
|
19
10
|
import {UFixed} from "../type/UFixed.sol";
|
20
11
|
import {DistributorType} from "../type/DistributorType.sol";
|
21
|
-
import {Timestamp
|
22
|
-
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
12
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
23
13
|
|
24
14
|
|
25
15
|
contract BasicDistribution is
|
@@ -92,6 +82,7 @@ contract BasicDistribution is
|
|
92
82
|
external
|
93
83
|
virtual
|
94
84
|
onlyOwner()
|
85
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
95
86
|
restricted()
|
96
87
|
{
|
97
88
|
_updateDistributorType(distributorNftId, distributorType, data);
|
@@ -143,7 +134,6 @@ contract BasicDistribution is
|
|
143
134
|
initialOwner,
|
144
135
|
name,
|
145
136
|
token,
|
146
|
-
"", // registry data
|
147
137
|
""); // component specifc data
|
148
138
|
}
|
149
139
|
}
|
@@ -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 {
|
4
|
+
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {COMPONENT, DISTRIBUTION, DISTRIBUTOR} 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
|
@@ -42,15 +37,6 @@ abstract contract Distribution is
|
|
42
37
|
}
|
43
38
|
|
44
39
|
|
45
|
-
function register()
|
46
|
-
external
|
47
|
-
virtual
|
48
|
-
onlyOwner()
|
49
|
-
{
|
50
|
-
_getDistributionStorage()._componentService.registerDistribution();
|
51
|
-
}
|
52
|
-
|
53
|
-
|
54
40
|
function isDistributor(address candidate)
|
55
41
|
public
|
56
42
|
view
|
@@ -127,15 +113,26 @@ abstract contract Distribution is
|
|
127
113
|
return true;
|
128
114
|
}
|
129
115
|
|
130
|
-
|
116
|
+
/// @inheritdoc IDistributionComponent
|
117
|
+
function withdrawCommission(NftId distributorNftId, Amount amount)
|
118
|
+
external
|
119
|
+
virtual
|
120
|
+
restricted()
|
121
|
+
onlyDistributor()
|
122
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
123
|
+
onlyNftOwner(distributorNftId)
|
124
|
+
returns (Amount withdrawnAmount)
|
125
|
+
{
|
126
|
+
return _withdrawCommission(distributorNftId, amount);
|
127
|
+
}
|
128
|
+
|
131
129
|
function _initializeDistribution(
|
132
130
|
address registry,
|
133
|
-
NftId
|
131
|
+
NftId productNftId,
|
134
132
|
IAuthorization authorization,
|
135
133
|
address initialOwner,
|
136
134
|
string memory name,
|
137
135
|
address token,
|
138
|
-
bytes memory registryData, // writeonly data that will saved in the object info record of the registry
|
139
136
|
bytes memory componentData // component specifidc data
|
140
137
|
)
|
141
138
|
internal
|
@@ -144,21 +141,20 @@ abstract contract Distribution is
|
|
144
141
|
{
|
145
142
|
_initializeInstanceLinkedComponent(
|
146
143
|
registry,
|
147
|
-
|
144
|
+
productNftId,
|
148
145
|
name,
|
149
146
|
token,
|
150
147
|
DISTRIBUTION(),
|
151
148
|
authorization,
|
152
149
|
true,
|
153
150
|
initialOwner,
|
154
|
-
registryData,
|
155
151
|
componentData);
|
156
152
|
|
157
153
|
DistributionStorage storage $ = _getDistributionStorage();
|
158
154
|
$._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
|
159
155
|
$._componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
160
156
|
|
161
|
-
|
157
|
+
_registerInterface(type(IDistributionComponent).interfaceId);
|
162
158
|
}
|
163
159
|
|
164
160
|
/// @dev Sets the distribution fees to the provided values.
|
@@ -266,10 +262,16 @@ abstract contract Distribution is
|
|
266
262
|
data);
|
267
263
|
}
|
268
264
|
|
265
|
+
function _withdrawCommission(NftId distributorNftId, Amount amount)
|
266
|
+
internal
|
267
|
+
returns (Amount withdrawnAmount)
|
268
|
+
{
|
269
|
+
return _getDistributionStorage()._distributionService.withdrawCommission(distributorNftId, amount);
|
270
|
+
}
|
269
271
|
|
270
|
-
function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
|
272
|
+
function _nftTransferFrom(address from, address to, uint256 tokenId, address operator) internal virtual override {
|
271
273
|
// keep track of distributor nft owner
|
272
|
-
emit LogDistributorUpdated(to,
|
274
|
+
emit LogDistributorUpdated(to, operator);
|
273
275
|
DistributionStorage storage $ = _getDistributionStorage();
|
274
276
|
$._distributorNftId[from] = NftIdLib.zero();
|
275
277
|
$._distributorNftId[to] = NftIdLib.toNftId(tokenId);
|
@@ -12,29 +12,14 @@ import {IPolicy} from "../instance/module/IPolicy.sol";
|
|
12
12
|
|
13
13
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
14
14
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
15
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
16
15
|
import {KEEP_STATE} from "../type/StateId.sol";
|
17
16
|
import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
|
18
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
19
|
-
import {RoleId} from "../type/RoleId.sol";
|
20
|
-
|
21
|
-
import {IVersionable} from "../shared/IVersionable.sol";
|
22
|
-
import {Versionable} from "../shared/Versionable.sol";
|
23
|
-
|
24
|
-
import {IService} from "../shared/IService.sol";
|
25
|
-
import {Service} from "../shared/Service.sol";
|
26
17
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
27
|
-
import {InstanceService} from "../instance/InstanceService.sol";
|
28
|
-
import {IComponent} from "../shared/IComponent.sol";
|
29
|
-
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
30
18
|
import {IDistributionService} from "./IDistributionService.sol";
|
31
|
-
import {
|
32
|
-
|
33
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
19
|
+
import {UFixed} from "../type/UFixed.sol";
|
34
20
|
import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
|
35
|
-
import {ReferralId,
|
36
|
-
import {Timestamp, TimestampLib
|
37
|
-
import {Key32} from "../type/Key32.sol";
|
21
|
+
import {ReferralId, ReferralLib} from "../type/Referral.sol";
|
22
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
38
23
|
import {IDistribution} from "../instance/module/IDistribution.sol";
|
39
24
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
40
25
|
|
@@ -43,12 +28,6 @@ contract DistributionService is
|
|
43
28
|
ComponentVerifyingService,
|
44
29
|
IDistributionService
|
45
30
|
{
|
46
|
-
using NftIdLib for NftId;
|
47
|
-
using TimestampLib for Timestamp;
|
48
|
-
using UFixedLib for UFixed;
|
49
|
-
using FeeLib for Fee;
|
50
|
-
using ReferralLib for ReferralId;
|
51
|
-
|
52
31
|
IComponentService private _componentService;
|
53
32
|
IInstanceService private _instanceService;
|
54
33
|
IRegistryService private _registryService;
|
@@ -58,21 +37,21 @@ contract DistributionService is
|
|
58
37
|
bytes memory data
|
59
38
|
)
|
60
39
|
internal
|
61
|
-
initializer
|
62
40
|
virtual override
|
41
|
+
initializer()
|
63
42
|
{
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
43
|
+
(
|
44
|
+
address registryAddress,
|
45
|
+
address authority
|
46
|
+
) = abi.decode(data, (address, address));
|
47
|
+
|
48
|
+
_initializeService(registryAddress, authority, owner);
|
70
49
|
|
71
50
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
72
51
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
73
52
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
74
53
|
|
75
|
-
|
54
|
+
_registerInterface(type(IDistributionService).interfaceId);
|
76
55
|
}
|
77
56
|
|
78
57
|
|
@@ -94,7 +73,7 @@ contract DistributionService is
|
|
94
73
|
InstanceReader instanceReader = instance.getInstanceReader();
|
95
74
|
|
96
75
|
{
|
97
|
-
NftId productNftId = _getProductNftId(
|
76
|
+
NftId productNftId = _getProductNftId(distributionNftId);
|
98
77
|
IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
|
99
78
|
|
100
79
|
UFixed variableDistributionFees = productInfo.distributionFee.fractionalFee;
|
@@ -152,7 +131,6 @@ contract DistributionService is
|
|
152
131
|
distributorType,
|
153
132
|
true, // active
|
154
133
|
data,
|
155
|
-
AmountLib.zero(),
|
156
134
|
0);
|
157
135
|
|
158
136
|
instance.getInstanceStore().createDistributor(distributorNftId, info);
|
@@ -185,6 +163,7 @@ contract DistributionService is
|
|
185
163
|
)
|
186
164
|
external
|
187
165
|
virtual
|
166
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
188
167
|
returns (ReferralId referralId)
|
189
168
|
{
|
190
169
|
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
@@ -192,90 +171,164 @@ contract DistributionService is
|
|
192
171
|
if (bytes(code).length == 0) {
|
193
172
|
revert ErrorIDistributionServiceInvalidReferral(code);
|
194
173
|
}
|
195
|
-
if (expiryAt.eqz()) {
|
174
|
+
if (expiryAt.eqz() || expiryAt.lte(TimestampLib.blockTimestamp())) {
|
196
175
|
revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
|
197
176
|
}
|
198
177
|
|
199
|
-
|
200
|
-
|
201
|
-
|
178
|
+
{
|
179
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
180
|
+
DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
|
181
|
+
IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
|
202
182
|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
183
|
+
if (distributorTypeData.maxReferralCount < maxReferrals) {
|
184
|
+
revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
|
185
|
+
}
|
186
|
+
if (distributorTypeData.minDiscountPercentage > discountPercentage) {
|
187
|
+
revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
|
188
|
+
}
|
189
|
+
if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
|
190
|
+
revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
|
191
|
+
}
|
192
|
+
if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
|
193
|
+
revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
|
194
|
+
}
|
214
195
|
}
|
215
196
|
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
197
|
+
{
|
198
|
+
referralId = ReferralLib.toReferralId(distributionNftId, code);
|
199
|
+
IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
|
200
|
+
distributorNftId,
|
201
|
+
code,
|
202
|
+
discountPercentage,
|
203
|
+
maxReferrals,
|
204
|
+
0, // used referrals
|
205
|
+
expiryAt,
|
206
|
+
data
|
207
|
+
);
|
208
|
+
|
209
|
+
instance.getInstanceStore().createReferral(referralId, info);
|
210
|
+
}
|
229
211
|
}
|
230
212
|
|
213
|
+
/// @inheritdoc IDistributionService
|
214
|
+
function processReferral(
|
215
|
+
NftId distributionNftId,
|
216
|
+
ReferralId referralId
|
217
|
+
)
|
218
|
+
external
|
219
|
+
virtual
|
220
|
+
restricted()
|
221
|
+
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
222
|
+
{
|
223
|
+
if (referralIsValid(distributionNftId, referralId)) {
|
224
|
+
IRegistry registry = getRegistry();
|
225
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
226
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo);
|
227
|
+
|
228
|
+
// update book keeping for referral info
|
229
|
+
IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
|
230
|
+
referralInfo.usedReferrals += 1;
|
231
|
+
instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
|
232
|
+
}
|
233
|
+
}
|
231
234
|
|
232
235
|
function processSale(
|
233
236
|
NftId distributionNftId, // assume always of distribution type
|
234
237
|
ReferralId referralId,
|
235
|
-
IPolicy.
|
238
|
+
IPolicy.PremiumInfo memory premium
|
236
239
|
)
|
237
240
|
external
|
238
241
|
virtual
|
239
|
-
restricted
|
242
|
+
restricted()
|
243
|
+
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
240
244
|
{
|
241
|
-
|
245
|
+
IRegistry registry = getRegistry();
|
246
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
247
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo);
|
242
248
|
InstanceReader reader = instance.getInstanceReader();
|
243
249
|
InstanceStore store = instance.getInstanceStore();
|
244
250
|
|
245
251
|
// get distribution owner fee amount
|
246
|
-
Amount distributionOwnerFee =
|
252
|
+
Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
|
247
253
|
|
248
254
|
// update referral/distributor info if applicable
|
249
255
|
if (referralIsValid(distributionNftId, referralId)) {
|
250
256
|
|
251
257
|
// increase distribution balance by commission amount and distribution owner fee
|
252
|
-
Amount commissionAmount =
|
258
|
+
Amount commissionAmount = premium.commissionAmount;
|
253
259
|
_componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
|
254
260
|
|
255
261
|
// update book keeping for referral info
|
256
262
|
IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
|
257
|
-
|
258
|
-
|
263
|
+
|
264
|
+
_componentService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
|
259
265
|
|
260
266
|
// update book keeping for distributor info
|
261
267
|
IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
|
262
|
-
// TODO refactor sum of commission amount into a fee balance for distributors
|
263
|
-
distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
|
264
268
|
distributorInfo.numPoliciesSold += 1;
|
265
269
|
store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
|
266
270
|
} else {
|
267
|
-
|
268
271
|
// increase distribution balance by distribution owner fee
|
269
272
|
_componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
|
270
273
|
}
|
271
274
|
}
|
272
275
|
|
273
|
-
|
276
|
+
/// @inheritdoc IDistributionService
|
277
|
+
function withdrawCommission(NftId distributorNftId, Amount amount)
|
278
|
+
public
|
279
|
+
virtual
|
280
|
+
// TODO: restricted() (once #462 is done)
|
281
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
282
|
+
returns (Amount withdrawnAmount)
|
283
|
+
{
|
284
|
+
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
285
|
+
InstanceReader reader = instance.getInstanceReader();
|
286
|
+
|
287
|
+
IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
|
288
|
+
address distributionWallet = distributionInfo.wallet;
|
289
|
+
|
290
|
+
Amount commissionAmount = reader.getFeeAmount(distributorNftId);
|
291
|
+
|
292
|
+
// determine withdrawn amount
|
293
|
+
withdrawnAmount = amount;
|
294
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
295
|
+
withdrawnAmount = commissionAmount;
|
296
|
+
} else {
|
297
|
+
if (withdrawnAmount.gt(commissionAmount)) {
|
298
|
+
revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
|
299
|
+
}
|
300
|
+
}
|
301
|
+
|
302
|
+
// decrease fee counters by withdrawnAmount and update distributor info
|
303
|
+
{
|
304
|
+
InstanceStore store = instance.getInstanceStore();
|
305
|
+
// decrease fee counter for distribution balance
|
306
|
+
_componentService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
|
307
|
+
// decrease fee counter for distributor fee
|
308
|
+
_componentService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
|
309
|
+
}
|
310
|
+
|
311
|
+
// transfer amount to distributor
|
312
|
+
{
|
313
|
+
address distributor = getRegistry().ownerOf(distributorNftId);
|
314
|
+
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.token), withdrawnAmount);
|
315
|
+
distributionInfo.tokenHandler.distributeTokens(distributionWallet, distributor, withdrawnAmount);
|
316
|
+
}
|
317
|
+
}
|
318
|
+
|
319
|
+
function referralIsValid(NftId distributionNftId, ReferralId referralId)
|
320
|
+
public
|
321
|
+
view
|
322
|
+
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
323
|
+
returns (bool isValid)
|
324
|
+
{
|
274
325
|
if (distributionNftId.eqz() || referralId.eqz()) {
|
275
326
|
return false;
|
276
327
|
}
|
277
328
|
|
278
|
-
|
329
|
+
IRegistry registry = getRegistry();
|
330
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
331
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo);
|
279
332
|
IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
|
280
333
|
|
281
334
|
if (info.distributorNftId.eqz()) {
|
@@ -292,7 +345,7 @@ contract DistributionService is
|
|
292
345
|
returns(IInstance instance)
|
293
346
|
{
|
294
347
|
NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
|
295
|
-
address instanceAddress = getRegistry().
|
348
|
+
address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
|
296
349
|
return IInstance(instanceAddress);
|
297
350
|
}
|
298
351
|
|
@@ -1,12 +1,9 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IVersionable} from "../
|
5
|
-
import {ProxyManager} from "../
|
4
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../upgradeability/ProxyManager.sol";
|
6
6
|
import {DistributionService} from "./DistributionService.sol";
|
7
|
-
import {Registry} from "../registry/Registry.sol";
|
8
|
-
import {RegistryService} from "../registry/RegistryService.sol";
|
9
|
-
import {REGISTRY} from "../type/ObjectType.sol";
|
10
7
|
|
11
8
|
contract DistributionServiceManager is ProxyManager {
|
12
9
|
|
@@ -15,15 +12,15 @@ contract DistributionServiceManager is ProxyManager {
|
|
15
12
|
/// @dev initializes proxy manager with distribution service implementation and deploys instance
|
16
13
|
constructor(
|
17
14
|
address authority,
|
18
|
-
address
|
15
|
+
address registry,
|
19
16
|
bytes32 salt
|
20
17
|
)
|
21
|
-
ProxyManager(registryAddress)
|
22
18
|
{
|
23
|
-
DistributionService
|
24
|
-
bytes memory data = abi.encode(
|
25
|
-
IVersionable versionable =
|
26
|
-
|
19
|
+
DistributionService svc = new DistributionService{salt: salt}();
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
|
+
address(svc),
|
27
24
|
data,
|
28
25
|
salt);
|
29
26
|
|