@etherisc/gif-next 0.0.2-a714036-117 → 0.0.2-a78920e-322
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 -8
- 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/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 +159 -397
- 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 +99 -329
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +229 -292
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +125 -117
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +89 -129
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +101 -62
- 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 +1415 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1965 -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 +1429 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1163 -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 +2267 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +71 -49
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +31 -99
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +90 -141
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +184 -139
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +467 -88
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +96 -258
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +99 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +339 -140
- 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 +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +111 -349
- 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 +77 -117
- 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 +87 -317
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +107 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +99 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +110 -340
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +209 -274
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +127 -119
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -47
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +99 -150
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +277 -205
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +107 -348
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +371 -388
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +112 -100
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +92 -168
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +90 -86
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +149 -333
- 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 +311 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +139 -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 +267 -141
- 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 +136 -130
- 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 +365 -349
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -99
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +215 -309
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +117 -117
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +147 -331
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -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 +310 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
- 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 +516 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +296 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +94 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +91 -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 +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +131 -223
- 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 +73 -274
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +503 -283
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +140 -114
- 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 +111 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -77
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +467 -33
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +77 -117
- 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 +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +87 -317
- 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 +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +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 +697 -25
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +111 -114
- 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 +63 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +190 -379
- 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 +118 -99
- 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 +87 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +95 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +169 -128
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -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 +32 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +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 +2 -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 +26 -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 +2 -2
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +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 +4 -3
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +12 -23
- package/contracts/distribution/DistributionService.sol +99 -82
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +14 -11
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +431 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +65 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
- package/contracts/instance/IInstance.sol +10 -31
- package/contracts/instance/IInstanceService.sol +2 -28
- package/contracts/instance/Instance.sol +30 -54
- package/contracts/instance/InstanceAdmin.sol +55 -38
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +79 -142
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IComponents.sol +11 -8
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +6 -16
- package/contracts/oracle/OracleService.sol +56 -42
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +35 -26
- package/contracts/pool/BasicPoolAuthorization.sol +14 -4
- package/contracts/pool/BundleService.sol +126 -79
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +17 -10
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +66 -43
- package/contracts/pool/Pool.sol +145 -128
- package/contracts/pool/PoolService.sol +287 -195
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +59 -30
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +9 -12
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +315 -118
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -36
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +23 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +383 -217
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +54 -54
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +110 -89
- package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +68 -38
- package/contracts/registry/IRegistry.sol +57 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +350 -201
- package/contracts/registry/RegistryAdmin.sol +151 -54
- package/contracts/registry/RegistryService.sol +35 -46
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +204 -204
- package/contracts/registry/ServiceAuthorizationV3.sol +27 -23
- package/contracts/shared/Component.sol +69 -115
- package/contracts/shared/ComponentService.sol +345 -170
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +28 -17
- package/contracts/shared/ContractLib.sol +54 -0
- package/contracts/shared/IComponent.sol +10 -13
- package/contracts/shared/IComponentService.sol +44 -18
- package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
- 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/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +71 -46
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +27 -7
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +19 -11
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +20 -18
- package/contracts/shared/TokenHandler.sol +366 -27
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +11 -5
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +39 -50
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +77 -35
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +16 -11
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +16 -2
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/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/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/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -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
|
+
}
|
@@ -2,6 +2,7 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Distribution} from "./Distribution.sol";
|
5
|
+
import {DISTRIBUTOR} from "../type/ObjectType.sol";
|
5
6
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
6
7
|
import {NftId} from "../type/NftId.sol";
|
7
8
|
import {ReferralId} from "../type/Referral.sol";
|
@@ -73,7 +74,7 @@ contract BasicDistribution is
|
|
73
74
|
return _createDistributor(distributor, distributorType, data);
|
74
75
|
}
|
75
76
|
|
76
|
-
function
|
77
|
+
function changeDistributorType(
|
77
78
|
NftId distributorNftId,
|
78
79
|
DistributorType distributorType,
|
79
80
|
bytes memory data
|
@@ -81,9 +82,10 @@ contract BasicDistribution is
|
|
81
82
|
external
|
82
83
|
virtual
|
83
84
|
onlyOwner()
|
85
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
84
86
|
restricted()
|
85
87
|
{
|
86
|
-
|
88
|
+
_changeDistributorType(distributorNftId, distributorType, data);
|
87
89
|
}
|
88
90
|
|
89
91
|
/**
|
@@ -132,7 +134,6 @@ contract BasicDistribution is
|
|
132
134
|
initialOwner,
|
133
135
|
name,
|
134
136
|
token,
|
135
|
-
"", // registry data
|
136
137
|
""); // component specifc data
|
137
138
|
}
|
138
139
|
}
|
@@ -37,7 +37,7 @@ contract BasicDistributionAuthorization
|
|
37
37
|
_authorize(functions, BasicDistribution.setFees.selector, "setFees");
|
38
38
|
_authorize(functions, BasicDistribution.createDistributorType.selector, "createDistributorType");
|
39
39
|
_authorize(functions, BasicDistribution.createDistributor.selector, "createDistributor");
|
40
|
-
_authorize(functions, BasicDistribution.
|
40
|
+
_authorize(functions, BasicDistribution.changeDistributorType.selector, "changeDistributorType");
|
41
41
|
_authorize(functions, BasicDistribution.createReferral.selector, "createReferral");
|
42
42
|
|
43
43
|
_authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
|
@@ -2,7 +2,7 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
|
-
import {COMPONENT, DISTRIBUTION} from "../type/ObjectType.sol";
|
5
|
+
import {COMPONENT, DISTRIBUTION, DISTRIBUTOR} from "../type/ObjectType.sol";
|
6
6
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
7
7
|
import {IDistributionService} from "./IDistributionService.sol";
|
8
8
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
@@ -36,15 +36,6 @@ abstract contract Distribution is
|
|
36
36
|
_;
|
37
37
|
}
|
38
38
|
|
39
|
-
function register()
|
40
|
-
external
|
41
|
-
virtual
|
42
|
-
onlyOwner()
|
43
|
-
{
|
44
|
-
_getDistributionStorage()._componentService.registerDistribution();
|
45
|
-
_approveTokenHandler(type(uint256).max);
|
46
|
-
}
|
47
|
-
|
48
39
|
|
49
40
|
function isDistributor(address candidate)
|
50
41
|
public
|
@@ -128,6 +119,7 @@ abstract contract Distribution is
|
|
128
119
|
virtual
|
129
120
|
restricted()
|
130
121
|
onlyDistributor()
|
122
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
131
123
|
onlyNftOwner(distributorNftId)
|
132
124
|
returns (Amount withdrawnAmount)
|
133
125
|
{
|
@@ -136,12 +128,11 @@ abstract contract Distribution is
|
|
136
128
|
|
137
129
|
function _initializeDistribution(
|
138
130
|
address registry,
|
139
|
-
NftId
|
131
|
+
NftId productNftId,
|
140
132
|
IAuthorization authorization,
|
141
133
|
address initialOwner,
|
142
134
|
string memory name,
|
143
135
|
address token,
|
144
|
-
bytes memory registryData, // writeonly data that will saved in the object info record of the registry
|
145
136
|
bytes memory componentData // component specifidc data
|
146
137
|
)
|
147
138
|
internal
|
@@ -150,21 +141,20 @@ abstract contract Distribution is
|
|
150
141
|
{
|
151
142
|
_initializeInstanceLinkedComponent(
|
152
143
|
registry,
|
153
|
-
|
144
|
+
productNftId,
|
154
145
|
name,
|
155
146
|
token,
|
156
147
|
DISTRIBUTION(),
|
157
148
|
authorization,
|
158
149
|
true,
|
159
150
|
initialOwner,
|
160
|
-
registryData,
|
161
151
|
componentData);
|
162
152
|
|
163
153
|
DistributionStorage storage $ = _getDistributionStorage();
|
164
154
|
$._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
|
165
155
|
$._componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
166
156
|
|
167
|
-
|
157
|
+
_registerInterface(type(IDistributionComponent).interfaceId);
|
168
158
|
}
|
169
159
|
|
170
160
|
/// @dev Sets the distribution fees to the provided values.
|
@@ -233,7 +223,7 @@ abstract contract Distribution is
|
|
233
223
|
}
|
234
224
|
|
235
225
|
/// @dev Uptates the distributor type for the specified distributor.
|
236
|
-
function
|
226
|
+
function _changeDistributorType(
|
237
227
|
NftId distributorNftId,
|
238
228
|
DistributorType distributorType,
|
239
229
|
bytes memory data
|
@@ -242,11 +232,10 @@ abstract contract Distribution is
|
|
242
232
|
virtual
|
243
233
|
{
|
244
234
|
DistributionStorage storage $ = _getDistributionStorage();
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
// data);
|
235
|
+
$._distributionService.changeDistributorType(
|
236
|
+
distributorNftId,
|
237
|
+
distributorType,
|
238
|
+
data);
|
250
239
|
}
|
251
240
|
|
252
241
|
/// @dev Create a new referral code for the provided distributor.
|
@@ -279,9 +268,9 @@ abstract contract Distribution is
|
|
279
268
|
return _getDistributionStorage()._distributionService.withdrawCommission(distributorNftId, amount);
|
280
269
|
}
|
281
270
|
|
282
|
-
function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
|
271
|
+
function _nftTransferFrom(address from, address to, uint256 tokenId, address operator) internal virtual override {
|
283
272
|
// keep track of distributor nft owner
|
284
|
-
emit LogDistributorUpdated(to,
|
273
|
+
emit LogDistributorUpdated(to, operator);
|
285
274
|
DistributionStorage storage $ = _getDistributionStorage();
|
286
275
|
$._distributorNftId[from] = NftIdLib.zero();
|
287
276
|
$._distributorNftId[to] = NftIdLib.toNftId(tokenId);
|
@@ -1,8 +1,6 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
|
6
4
|
import {IRegistry} from "../registry/IRegistry.sol";
|
7
5
|
import {IInstance} from "../instance/IInstance.sol";
|
8
6
|
import {IComponentService} from "../shared/IComponentService.sol";
|
@@ -14,12 +12,11 @@ import {IPolicy} from "../instance/module/IPolicy.sol";
|
|
14
12
|
|
15
13
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
16
14
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
17
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
18
15
|
import {KEEP_STATE} from "../type/StateId.sol";
|
19
16
|
import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
|
20
17
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
21
18
|
import {IDistributionService} from "./IDistributionService.sol";
|
22
|
-
import {UFixed
|
19
|
+
import {UFixed} from "../type/UFixed.sol";
|
23
20
|
import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
|
24
21
|
import {ReferralId, ReferralLib} from "../type/Referral.sol";
|
25
22
|
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
@@ -40,21 +37,21 @@ contract DistributionService is
|
|
40
37
|
bytes memory data
|
41
38
|
)
|
42
39
|
internal
|
43
|
-
initializer
|
44
40
|
virtual override
|
41
|
+
initializer()
|
45
42
|
{
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
43
|
+
(
|
44
|
+
address registryAddress,
|
45
|
+
address authority
|
46
|
+
) = abi.decode(data, (address, address));
|
47
|
+
|
48
|
+
_initializeService(registryAddress, authority, owner);
|
52
49
|
|
53
50
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
54
51
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
55
52
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
56
53
|
|
57
|
-
|
54
|
+
_registerInterface(type(IDistributionService).interfaceId);
|
58
55
|
}
|
59
56
|
|
60
57
|
|
@@ -76,7 +73,7 @@ contract DistributionService is
|
|
76
73
|
InstanceReader instanceReader = instance.getInstanceReader();
|
77
74
|
|
78
75
|
{
|
79
|
-
NftId productNftId = _getProductNftId(
|
76
|
+
NftId productNftId = _getProductNftId(distributionNftId);
|
80
77
|
IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
|
81
78
|
|
82
79
|
UFixed variableDistributionFees = productInfo.distributionFee.fractionalFee;
|
@@ -139,21 +136,20 @@ contract DistributionService is
|
|
139
136
|
instance.getInstanceStore().createDistributor(distributorNftId, info);
|
140
137
|
}
|
141
138
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
// }
|
139
|
+
function changeDistributorType(
|
140
|
+
NftId distributorNftId,
|
141
|
+
DistributorType distributorType,
|
142
|
+
bytes memory data
|
143
|
+
)
|
144
|
+
external
|
145
|
+
virtual
|
146
|
+
{
|
147
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
148
|
+
IDistribution.DistributorInfo memory distributorInfo = instance.getInstanceReader().getDistributorInfo(distributorNftId);
|
149
|
+
distributorInfo.distributorType = distributorType;
|
150
|
+
distributorInfo.data = data;
|
151
|
+
instance.getInstanceStore().updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
|
152
|
+
}
|
157
153
|
|
158
154
|
|
159
155
|
function createReferral(
|
@@ -166,6 +162,7 @@ contract DistributionService is
|
|
166
162
|
)
|
167
163
|
external
|
168
164
|
virtual
|
165
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
169
166
|
returns (ReferralId referralId)
|
170
167
|
{
|
171
168
|
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
@@ -173,70 +170,95 @@ contract DistributionService is
|
|
173
170
|
if (bytes(code).length == 0) {
|
174
171
|
revert ErrorIDistributionServiceInvalidReferral(code);
|
175
172
|
}
|
176
|
-
if (expiryAt.eqz()) {
|
173
|
+
if (expiryAt.eqz() || expiryAt.lte(TimestampLib.blockTimestamp())) {
|
177
174
|
revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
|
178
175
|
}
|
179
176
|
|
180
|
-
|
181
|
-
|
182
|
-
|
177
|
+
{
|
178
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
179
|
+
DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
|
180
|
+
IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
|
183
181
|
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
182
|
+
if (distributorTypeData.maxReferralCount < maxReferrals) {
|
183
|
+
revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
|
184
|
+
}
|
185
|
+
if (distributorTypeData.minDiscountPercentage > discountPercentage) {
|
186
|
+
revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
|
187
|
+
}
|
188
|
+
if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
|
189
|
+
revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
|
190
|
+
}
|
191
|
+
if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
|
192
|
+
revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
|
193
|
+
}
|
195
194
|
}
|
196
195
|
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
196
|
+
{
|
197
|
+
referralId = ReferralLib.toReferralId(distributionNftId, code);
|
198
|
+
IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
|
199
|
+
distributorNftId,
|
200
|
+
code,
|
201
|
+
discountPercentage,
|
202
|
+
maxReferrals,
|
203
|
+
0, // used referrals
|
204
|
+
expiryAt,
|
205
|
+
data
|
206
|
+
);
|
207
|
+
|
208
|
+
instance.getInstanceStore().createReferral(referralId, info);
|
209
|
+
}
|
210
210
|
}
|
211
211
|
|
212
|
+
/// @inheritdoc IDistributionService
|
213
|
+
function processReferral(
|
214
|
+
NftId distributionNftId,
|
215
|
+
ReferralId referralId
|
216
|
+
)
|
217
|
+
external
|
218
|
+
virtual
|
219
|
+
restricted()
|
220
|
+
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
221
|
+
{
|
222
|
+
if (referralIsValid(distributionNftId, referralId)) {
|
223
|
+
IRegistry registry = getRegistry();
|
224
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
225
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
226
|
+
|
227
|
+
// update book keeping for referral info
|
228
|
+
IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
|
229
|
+
referralInfo.usedReferrals += 1;
|
230
|
+
instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
|
231
|
+
}
|
232
|
+
}
|
212
233
|
|
213
234
|
function processSale(
|
214
235
|
NftId distributionNftId, // assume always of distribution type
|
215
236
|
ReferralId referralId,
|
216
|
-
IPolicy.
|
237
|
+
IPolicy.PremiumInfo memory premium
|
217
238
|
)
|
218
239
|
external
|
219
240
|
virtual
|
220
|
-
restricted
|
241
|
+
restricted()
|
242
|
+
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
221
243
|
{
|
222
|
-
|
244
|
+
IRegistry registry = getRegistry();
|
245
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
246
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
223
247
|
InstanceReader reader = instance.getInstanceReader();
|
224
248
|
InstanceStore store = instance.getInstanceStore();
|
225
249
|
|
226
250
|
// get distribution owner fee amount
|
227
|
-
Amount distributionOwnerFee =
|
251
|
+
Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
|
228
252
|
|
229
253
|
// update referral/distributor info if applicable
|
230
254
|
if (referralIsValid(distributionNftId, referralId)) {
|
231
255
|
|
232
256
|
// increase distribution balance by commission amount and distribution owner fee
|
233
|
-
Amount commissionAmount =
|
257
|
+
Amount commissionAmount = premium.commissionAmount;
|
234
258
|
_componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
|
235
259
|
|
236
260
|
// update book keeping for referral info
|
237
261
|
IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
|
238
|
-
referralInfo.usedReferrals += 1;
|
239
|
-
store.updateReferral(referralId, referralInfo, KEEP_STATE());
|
240
262
|
|
241
263
|
_componentService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
|
242
264
|
|
@@ -255,13 +277,14 @@ contract DistributionService is
|
|
255
277
|
public
|
256
278
|
virtual
|
257
279
|
// TODO: restricted() (once #462 is done)
|
280
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
258
281
|
returns (Amount withdrawnAmount)
|
259
282
|
{
|
260
283
|
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
261
284
|
InstanceReader reader = instance.getInstanceReader();
|
262
285
|
|
263
286
|
IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
|
264
|
-
address distributionWallet = distributionInfo.
|
287
|
+
address distributionWallet = distributionInfo.tokenHandler.getWallet();
|
265
288
|
|
266
289
|
Amount commissionAmount = reader.getFeeAmount(distributorNftId);
|
267
290
|
|
@@ -275,17 +298,6 @@ contract DistributionService is
|
|
275
298
|
}
|
276
299
|
}
|
277
300
|
|
278
|
-
if (withdrawnAmount.eqz()) {
|
279
|
-
revert ErrorDistributionServiceCommissionWithdrawAmountIsZero();
|
280
|
-
}
|
281
|
-
|
282
|
-
// check allowance
|
283
|
-
IERC20Metadata token = IERC20Metadata(distributionInfo.token);
|
284
|
-
uint256 tokenAllowance = token.allowance(distributionWallet, address(distributionInfo.tokenHandler));
|
285
|
-
if (tokenAllowance < withdrawnAmount.toInt()) {
|
286
|
-
revert ErrorDistributionServiceWalletAllowanceTooSmall(distributionWallet, address(distributionInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
|
287
|
-
}
|
288
|
-
|
289
301
|
// decrease fee counters by withdrawnAmount and update distributor info
|
290
302
|
{
|
291
303
|
InstanceStore store = instance.getInstanceStore();
|
@@ -298,19 +310,24 @@ contract DistributionService is
|
|
298
310
|
// transfer amount to distributor
|
299
311
|
{
|
300
312
|
address distributor = getRegistry().ownerOf(distributorNftId);
|
301
|
-
|
302
|
-
distributionInfo.tokenHandler.
|
303
|
-
|
304
|
-
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(token), withdrawnAmount);
|
313
|
+
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.token), withdrawnAmount);
|
314
|
+
distributionInfo.tokenHandler.distributeTokens(distributionWallet, distributor, withdrawnAmount);
|
305
315
|
}
|
306
316
|
}
|
307
317
|
|
308
|
-
function referralIsValid(NftId distributionNftId, ReferralId referralId)
|
318
|
+
function referralIsValid(NftId distributionNftId, ReferralId referralId)
|
319
|
+
public
|
320
|
+
view
|
321
|
+
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
322
|
+
returns (bool isValid)
|
323
|
+
{
|
309
324
|
if (distributionNftId.eqz() || referralId.eqz()) {
|
310
325
|
return false;
|
311
326
|
}
|
312
327
|
|
313
|
-
|
328
|
+
IRegistry registry = getRegistry();
|
329
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
330
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
314
331
|
IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
|
315
332
|
|
316
333
|
if (info.distributorNftId.eqz()) {
|
@@ -327,7 +344,7 @@ contract DistributionService is
|
|
327
344
|
returns(IInstance instance)
|
328
345
|
{
|
329
346
|
NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
|
330
|
-
address instanceAddress = getRegistry().
|
347
|
+
address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
|
331
348
|
return IInstance(instanceAddress);
|
332
349
|
}
|
333
350
|
|
@@ -12,15 +12,15 @@ contract DistributionServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with distribution service implementation and deploys instance
|
13
13
|
constructor(
|
14
14
|
address authority,
|
15
|
-
address
|
15
|
+
address registry,
|
16
16
|
bytes32 salt
|
17
17
|
)
|
18
|
-
ProxyManager(registryAddress)
|
19
18
|
{
|
20
|
-
DistributionService
|
21
|
-
bytes memory data = abi.encode(
|
22
|
-
IVersionable versionable =
|
23
|
-
|
19
|
+
DistributionService svc = new DistributionService{salt: salt}();
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
|
+
address(svc),
|
24
24
|
data,
|
25
25
|
salt);
|
26
26
|
|
@@ -12,7 +12,7 @@ interface IDistributionComponent is IInstanceLinkedComponent {
|
|
12
12
|
error ErrorDistributionNotDistributor(address distributor);
|
13
13
|
error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
|
14
14
|
|
15
|
-
event LogDistributorUpdated(address to, address
|
15
|
+
event LogDistributorUpdated(address to, address operator);
|
16
16
|
|
17
17
|
/// @dev Returns true iff the provided address is registered as a distributor with this distribution component.
|
18
18
|
function isDistributor(address candidate) external view returns (bool);
|
@@ -3,7 +3,6 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
5
|
import {NftId} from "../type/NftId.sol";
|
6
|
-
import {Fee} from "../type/Fee.sol";
|
7
6
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
8
7
|
import {IService} from "../shared/IService.sol";
|
9
8
|
import {UFixed} from "../type/UFixed.sol";
|
@@ -28,9 +27,7 @@ interface IDistributionService is IService {
|
|
28
27
|
error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
|
29
28
|
|
30
29
|
error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
31
|
-
|
32
|
-
error ErrorDistributionServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
|
33
|
-
|
30
|
+
|
34
31
|
error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
|
35
32
|
error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
|
36
33
|
|
@@ -59,12 +56,11 @@ interface IDistributionService is IService {
|
|
59
56
|
bytes memory data
|
60
57
|
) external returns (NftId distributorNftId);
|
61
58
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
// ) external;
|
59
|
+
function changeDistributorType(
|
60
|
+
NftId distributorNftId,
|
61
|
+
DistributorType distributorType,
|
62
|
+
bytes memory data
|
63
|
+
) external;
|
68
64
|
|
69
65
|
function createReferral(
|
70
66
|
NftId distributorNftId,
|
@@ -77,11 +73,18 @@ interface IDistributionService is IService {
|
|
77
73
|
external
|
78
74
|
returns (ReferralId referralId);
|
79
75
|
|
76
|
+
/// @dev callback from product service when a referral is used.
|
77
|
+
/// Calling this will increment the referral usage counter.
|
78
|
+
function processReferral(
|
79
|
+
NftId distributionNftId,
|
80
|
+
ReferralId referralId
|
81
|
+
) external;
|
82
|
+
|
80
83
|
/// @dev callback from product service when selling a policy for a specific referralId
|
81
84
|
function processSale(
|
82
85
|
NftId distributionNftId,
|
83
86
|
ReferralId referralId,
|
84
|
-
IPolicy.
|
87
|
+
IPolicy.PremiumInfo memory premium
|
85
88
|
) external;
|
86
89
|
|
87
90
|
function referralIsValid(
|