@etherisc/gif-next 0.0.2-f11de3a-698 → 0.0.2-f12cf4d-104
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 +9 -7
- 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 +136 -360
- 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 -315
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +206 -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 -115
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -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 +1429 -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 +1979 -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 +1430 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -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 +53 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +31 -86
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +72 -123
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +166 -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 +447 -87
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +96 -245
- 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 +337 -138
- 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 -335
- 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 -103
- 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 -303
- 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 +107 -323
- 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 +215 -256
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +130 -110
- 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 +98 -135
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +271 -199
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +106 -333
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +369 -386
- 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 -319
- 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 -116
- 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 -317
- 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 +424 -277
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +137 -115
- 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 +388 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +77 -103
- 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 -303
- 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 +2 -1
- package/contracts/distribution/Distribution.sol +7 -17
- package/contracts/distribution/DistributionService.sol +85 -67
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +9 -5
- 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 +58 -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 -30
- package/contracts/instance/IInstanceService.sol +2 -23
- package/contracts/instance/Instance.sol +29 -51
- package/contracts/instance/InstanceAdmin.sol +43 -32
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +107 -25
- package/contracts/instance/InstanceService.sol +75 -104
- 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 +10 -6
- 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 +13 -3
- package/contracts/pool/BundleService.sol +112 -69
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +16 -9
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +62 -39
- package/contracts/pool/Pool.sol +145 -128
- package/contracts/pool/PoolService.sol +283 -189
- 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 +26 -23
- package/contracts/shared/Component.sol +63 -114
- package/contracts/shared/ComponentService.sol +296 -168
- 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 +38 -16
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -22
- 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 -38
- 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
@@ -11,15 +11,18 @@ contract ComponentServiceManager is ProxyManager {
|
|
11
11
|
|
12
12
|
/// @dev initializes proxy manager with service implementation
|
13
13
|
constructor(
|
14
|
-
address
|
14
|
+
address authority,
|
15
|
+
address registry,
|
16
|
+
bytes32 salt
|
15
17
|
)
|
16
|
-
ProxyManager(registryAddress)
|
17
18
|
{
|
18
19
|
ComponentService svc = new ComponentService();
|
19
|
-
bytes memory data = abi.encode(
|
20
|
-
IVersionable versionable =
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
21
23
|
address(svc),
|
22
|
-
data
|
24
|
+
data,
|
25
|
+
salt);
|
23
26
|
|
24
27
|
_componentService = ComponentService(address(versionable));
|
25
28
|
}
|
@@ -5,14 +5,13 @@ import {IInstance} from "../instance/IInstance.sol";
|
|
5
5
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
6
6
|
import {IRegistry} from "../registry/IRegistry.sol";
|
7
7
|
import {NftId} from "../type/NftId.sol";
|
8
|
-
import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
8
|
+
import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
|
9
9
|
import {Service} from "../shared/Service.sol";
|
10
10
|
|
11
11
|
|
12
12
|
abstract contract ComponentVerifyingService is
|
13
13
|
Service
|
14
14
|
{
|
15
|
-
|
16
15
|
error ErrorComponentVerifyingServiceComponentTypeInvalid(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
|
17
16
|
error ErrorComponentVerifyingServiceComponentIsLocked(NftId componentNftId);
|
18
17
|
|
@@ -28,12 +27,12 @@ abstract contract ComponentVerifyingService is
|
|
28
27
|
view
|
29
28
|
returns(
|
30
29
|
NftId componentNftId,
|
31
|
-
IRegistry.ObjectInfo memory
|
30
|
+
IRegistry.ObjectInfo memory objectInfo,
|
32
31
|
IInstance instance
|
33
32
|
)
|
34
33
|
{
|
35
|
-
componentNftId = getRegistry().
|
36
|
-
(
|
34
|
+
componentNftId = getRegistry().getNftIdForAddress(msg.sender);
|
35
|
+
(objectInfo, instance) = _getAndVerifyComponentInfo(
|
37
36
|
componentNftId,
|
38
37
|
expectedType,
|
39
38
|
true); // only active
|
@@ -83,7 +82,15 @@ abstract contract ComponentVerifyingService is
|
|
83
82
|
}
|
84
83
|
}
|
85
84
|
|
86
|
-
|
85
|
+
if (info.objectType == STAKING()) {
|
86
|
+
return (info, instance);
|
87
|
+
}
|
88
|
+
|
89
|
+
if (info.objectType == PRODUCT()) {
|
90
|
+
instance = _getInstance(registry, info.parentNftId);
|
91
|
+
} else {
|
92
|
+
instance = _getInstanceForComponent(registry, info.parentNftId);
|
93
|
+
}
|
87
94
|
|
88
95
|
// ensure component is not locked
|
89
96
|
if (onlyActive) {
|
@@ -94,24 +101,28 @@ abstract contract ComponentVerifyingService is
|
|
94
101
|
}
|
95
102
|
|
96
103
|
|
97
|
-
|
98
|
-
function _getProductNftId(
|
99
|
-
InstanceReader instanceReader,
|
100
|
-
NftId componentNftId
|
101
|
-
)
|
104
|
+
function _getInstanceForComponent(IRegistry registry, NftId productNftId)
|
102
105
|
internal
|
103
|
-
virtual
|
104
106
|
view
|
105
|
-
returns (
|
107
|
+
returns (IInstance instance)
|
106
108
|
{
|
107
|
-
return
|
109
|
+
return _getInstance(
|
110
|
+
registry,
|
111
|
+
registry.getObjectInfo(
|
112
|
+
productNftId).parentNftId);
|
113
|
+
}
|
114
|
+
|
115
|
+
|
116
|
+
/// @dev returns the product nft id from the registry.
|
117
|
+
/// assumes the component nft id is valid and represents a product linked component.
|
118
|
+
function _getProductNftId(NftId componentNftId) internal view returns (NftId productNftId) {
|
119
|
+
productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
|
108
120
|
}
|
109
121
|
|
110
122
|
|
111
123
|
/// @dev returns an IInstance contract reference for the specified instance nft id
|
112
|
-
function _getInstance(NftId instanceNftId) internal view returns (IInstance) {
|
124
|
+
function _getInstance(IRegistry registry, NftId instanceNftId) internal view returns (IInstance) {
|
113
125
|
return IInstance(
|
114
|
-
|
115
|
-
instanceNftId).objectAddress);
|
126
|
+
registry.getObjectAddress(instanceNftId));
|
116
127
|
}
|
117
128
|
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
|
5
|
+
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
6
|
+
|
7
|
+
import {IPolicyHolder} from "./IPolicyHolder.sol";
|
8
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
+
|
10
|
+
library ContractLib {
|
11
|
+
|
12
|
+
function isPolicyHolder(address target) external view returns (bool) {
|
13
|
+
return ERC165Checker.supportsInterface(target, type(IPolicyHolder).interfaceId);
|
14
|
+
}
|
15
|
+
|
16
|
+
|
17
|
+
function isAccessManaged(address target) external view returns (bool) {
|
18
|
+
if (!isContract(target)) {
|
19
|
+
return false;
|
20
|
+
}
|
21
|
+
|
22
|
+
(bool success, ) = target.staticcall(
|
23
|
+
abi.encodeWithSelector(
|
24
|
+
IAccessManaged.authority.selector));
|
25
|
+
|
26
|
+
return success;
|
27
|
+
}
|
28
|
+
|
29
|
+
|
30
|
+
function isRegistry(address registry) public view returns (bool) {
|
31
|
+
if (!isContract(registry)) {
|
32
|
+
return false;
|
33
|
+
}
|
34
|
+
|
35
|
+
return supportsInterface(registry, type(IRegistry).interfaceId);
|
36
|
+
}
|
37
|
+
|
38
|
+
|
39
|
+
function isContract(address target) public view returns (bool) {
|
40
|
+
if (target == address(0)) {
|
41
|
+
return false;
|
42
|
+
}
|
43
|
+
|
44
|
+
uint256 size;
|
45
|
+
assembly {
|
46
|
+
size := extcodesize(target)
|
47
|
+
}
|
48
|
+
return size > 0;
|
49
|
+
}
|
50
|
+
|
51
|
+
function supportsInterface(address target, bytes4 interfaceId) public view returns (bool) {
|
52
|
+
return ERC165Checker.supportsInterface(target, interfaceId);
|
53
|
+
}
|
54
|
+
}
|
@@ -17,29 +17,26 @@ interface IComponent is
|
|
17
17
|
IRegisterable,
|
18
18
|
ITransferInterceptor
|
19
19
|
{
|
20
|
+
error ErrorComponentProductNftIdZero();
|
21
|
+
error ErrorComponentProductNftIdNonzero();
|
22
|
+
error ErrorComponentNameLengthZero();
|
23
|
+
|
20
24
|
error ErrorComponentNotChainNft(address caller);
|
21
25
|
|
26
|
+
error ErrorComponentTokenAddressNonzero();
|
22
27
|
error ErrorComponentTokenAddressZero();
|
23
|
-
error ErrorComponentNameLengthZero();
|
24
28
|
error ErrorComponentWalletAddressZero();
|
25
29
|
error ErrorComponentWalletAddressIsSameAsCurrent();
|
26
|
-
error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
|
27
30
|
error ErrorComponentWalletNotComponent();
|
28
31
|
|
29
32
|
event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
|
30
33
|
event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
|
31
|
-
event LogComponentTokenHandlerApproved(address token, Amount limit);
|
32
|
-
|
33
|
-
/// @dev approves token hanlder to spend up to the specified amount of tokens
|
34
|
-
/// reverts if component wallet is not component itself
|
35
|
-
/// only component owner (nft holder) is authorizes to call this function
|
36
|
-
function approveTokenHandler(Amount spendingLimitAmount) external;
|
34
|
+
event LogComponentTokenHandlerApproved(address tokenHandler, address token, Amount limit, bool isMaxAmount);
|
37
35
|
|
38
|
-
/// @dev
|
39
|
-
/// if
|
40
|
-
///
|
41
|
-
|
42
|
-
function setWallet(address walletAddress) external;
|
36
|
+
/// @dev Approves token hanlder to spend up to the specified amount of tokens.
|
37
|
+
/// Reverts if component wallet is not token handler itself.
|
38
|
+
/// Only component owner (nft holder) is authorizes to call this function.
|
39
|
+
function approveTokenHandler(IERC20Metadata token, Amount spendingLimitAmount) external;
|
43
40
|
|
44
41
|
/// @dev returns the name of this component
|
45
42
|
/// to successfully register the component with an instance the name MUST be unique in the linked instance
|
@@ -1,19 +1,39 @@
|
|
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";
|
4
5
|
|
5
6
|
import {Amount} from "../type/Amount.sol";
|
6
7
|
import {Fee} from "../type/Fee.sol";
|
7
8
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
8
9
|
import {IService} from "../shared/IService.sol";
|
9
10
|
import {NftId} from "../type/NftId.sol";
|
11
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
10
12
|
import {UFixed} from "../type/UFixed.sol";
|
13
|
+
import {VersionPart} from "../type/Version.sol";
|
11
14
|
|
12
15
|
/// @dev component base class
|
13
16
|
/// component examples are staking, product, distribution, pool and oracle
|
14
17
|
interface IComponentService is
|
15
18
|
IService
|
16
19
|
{
|
20
|
+
error ErrorComponentServiceNotInstanceLinkedComponent(address component);
|
21
|
+
error ErrorComponentServiceSenderNotRegistered(address sender);
|
22
|
+
error ErrorComponentServiceNotComponent(address component);
|
23
|
+
error ErrorComponentServiceTypeNotSupported(address component, ObjectType invalidType);
|
24
|
+
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
25
|
+
error ErrorComponentServiceAlreadyRegistered(address component);
|
26
|
+
error ErrorComponentServiceReleaseMismatch(address component, VersionPart componentRelease, VersionPart parentRelease);
|
27
|
+
error ErrorComponentServiceSenderNotComponentParent(NftId senderNftId, NftId compnentParentNftId);
|
28
|
+
error ErrorComponentServiceParentNotInstance(NftId nftId, ObjectType objectType);
|
29
|
+
error ErrorComponentServiceParentNotProduct(NftId nftId, ObjectType objectType);
|
30
|
+
|
31
|
+
error ErrorProductServiceNoDistributionExpected(NftId productNftId);
|
32
|
+
error ErrorProductServiceDistributionAlreadyRegistered(NftId productNftId, NftId distributionNftId);
|
33
|
+
error ErrorProductServiceNoOraclesExpected(NftId productNftId);
|
34
|
+
error ErrorProductServiceOraclesAlreadyRegistered(NftId productNftId, uint8 expectedOracles);
|
35
|
+
error ErrorProductServicePoolAlreadyRegistered(NftId productNftId, NftId poolNftId);
|
36
|
+
|
17
37
|
error ErrorComponentServiceNewWalletAddressZero();
|
18
38
|
error ErrorComponentServiceWalletAddressZero();
|
19
39
|
error ErrorComponentServiceWalletAddressIsSameAsCurrent();
|
@@ -22,7 +42,9 @@ interface IComponentService is
|
|
22
42
|
error ErrorComponentServiceWithdrawAmountExceedsLimit(Amount withdrawnAmount, Amount withdrawLimit);
|
23
43
|
error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
|
24
44
|
|
45
|
+
event LogComponentServiceRegistered(NftId instanceNftId, NftId componentNftId, ObjectType componentType, address component, address token, address initialOwner);
|
25
46
|
event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
|
47
|
+
event LogComponentServiceWalletTokensTransferred(NftId componentNftId, address currentWallet, address newWallet, uint256 currentBalance);
|
26
48
|
event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
|
27
49
|
event LogComponentServiceProductFeesUpdated(NftId productNftId);
|
28
50
|
event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);
|
@@ -38,13 +60,21 @@ interface IComponentService is
|
|
38
60
|
|
39
61
|
//-------- component ----------------------------------------------------//
|
40
62
|
|
41
|
-
/// @dev
|
63
|
+
/// @dev Approves the callers token handler to spend up to the specified amount of tokens.
|
64
|
+
/// Reverts if the component's token handler wallet is not the token handler itself.
|
65
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount) external;
|
66
|
+
|
67
|
+
/// @dev Approves the staking token handler.
|
68
|
+
/// Reverts if the staking token handler wallet is not the token handler itself.
|
69
|
+
function approveStakingTokenHandler(IERC20Metadata token, Amount amount) external;
|
70
|
+
|
71
|
+
/// @dev Sets the components associated wallet address
|
42
72
|
function setWallet(address newWallet) external;
|
43
73
|
|
44
|
-
/// @dev
|
74
|
+
/// @dev Locks the component associated with the caller
|
45
75
|
function lock() external;
|
46
76
|
|
47
|
-
/// @dev
|
77
|
+
/// @dev Unlocks the component associated with the caller
|
48
78
|
function unlock() external;
|
49
79
|
|
50
80
|
/// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
|
@@ -52,10 +82,13 @@ interface IComponentService is
|
|
52
82
|
/// @return withdrawnAmount the amount that was actually withdrawn
|
53
83
|
function withdrawFees(Amount withdrawAmount) external returns (Amount withdrawnAmount);
|
54
84
|
|
85
|
+
/// @dev Registers the provided component with the product (sender)
|
86
|
+
function registerComponent(address component) external returns (NftId componentNftId);
|
87
|
+
|
55
88
|
//-------- product ------------------------------------------------------//
|
56
89
|
|
57
|
-
/// @dev
|
58
|
-
function registerProduct() external;
|
90
|
+
/// @dev Registers the specified product component for the instance (sender)
|
91
|
+
function registerProduct(address product) external returns (NftId productNftId);
|
59
92
|
|
60
93
|
function setProductFees(
|
61
94
|
Fee memory productFee, // product fee on net premium
|
@@ -67,9 +100,6 @@ interface IComponentService is
|
|
67
100
|
|
68
101
|
//-------- distribution -------------------------------------------------//
|
69
102
|
|
70
|
-
/// @dev registers the sending component as a distribution component
|
71
|
-
function registerDistribution() external;
|
72
|
-
|
73
103
|
function setDistributionFees(
|
74
104
|
Fee memory distributionFee, // distribution fee for sales that do not include commissions
|
75
105
|
Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
|
@@ -82,16 +112,8 @@ interface IComponentService is
|
|
82
112
|
function increaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
|
83
113
|
function decreaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
|
84
114
|
|
85
|
-
//-------- oracle -------------------------------------------------------//
|
86
|
-
|
87
|
-
/// @dev registers the sending component as an oracle component
|
88
|
-
function registerOracle() external;
|
89
|
-
|
90
115
|
//-------- pool ---------------------------------------------------------//
|
91
116
|
|
92
|
-
/// @dev registers the sending component as a pool component
|
93
|
-
function registerPool() external;
|
94
|
-
|
95
117
|
function setPoolFees(
|
96
118
|
Fee memory poolFee, // pool fee on net premium
|
97
119
|
Fee memory stakingFee, // pool fee on staked capital from investor
|
@@ -7,28 +7,17 @@ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IER
|
|
7
7
|
import {Amount} from "../type/Amount.sol";
|
8
8
|
import {IComponent} from "../shared/IComponent.sol";
|
9
9
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
10
|
-
import {IComponents} from "../instance/module/IComponents.sol";
|
11
10
|
import {IInstance} from "../instance/IInstance.sol";
|
12
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
13
|
-
import {IProductService} from "../product/IProductService.sol";
|
14
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
15
11
|
import {NftId} from "../type/NftId.sol";
|
16
12
|
import {ObjectType} from "../type/ObjectType.sol";
|
17
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
18
13
|
|
19
14
|
/// @dev component base class
|
20
15
|
/// component examples are product, distribution, pool and oracle
|
21
16
|
interface IInstanceLinkedComponent is
|
22
17
|
IComponent
|
23
18
|
{
|
24
|
-
error
|
25
|
-
error
|
26
|
-
error ErrorComponentProductNftAlreadySet();
|
27
|
-
|
28
|
-
/// @dev registers this component with the registry and instance.
|
29
|
-
/// a component may only be linked once
|
30
|
-
/// only initial component owner (nft holder) is authorizes to call this function
|
31
|
-
function register() external;
|
19
|
+
error ErrorInstanceLinkedComponentTypeMismatch(ObjectType requiredType, ObjectType objectType);
|
20
|
+
error ErrorInstanceLinkedComponentNotProduct(NftId nftId, ObjectType objectType);
|
32
21
|
|
33
22
|
/// @dev locks component to disable functions that may change state related to this component, the only exception is function "unlock"
|
34
23
|
/// only component owner (nft holder) is authorizes to call this function
|
@@ -38,19 +27,15 @@ interface IInstanceLinkedComponent is
|
|
38
27
|
/// only component owner (nft holder) is authorizes to call this function
|
39
28
|
function unlock() external;
|
40
29
|
|
30
|
+
/// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
|
31
|
+
/// @param amount the amount to withdraw
|
32
|
+
/// @return withdrawnAmount the amount that was actually withdrawn
|
33
|
+
function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
|
34
|
+
|
41
35
|
/// @dev defines the instance to which this component is linked to
|
42
36
|
function getInstance() external view returns (IInstance instance);
|
43
37
|
|
44
|
-
/// @dev defines the product to which this component is linked to
|
45
|
-
/// this is only relevant for pool and distribution components
|
46
|
-
function getProductNftId() external view returns (NftId productNftId);
|
47
|
-
|
48
38
|
/// @dev returns the initial component authorization specification.
|
49
39
|
function getAuthorization() external view returns (IAuthorization authorization);
|
50
40
|
|
51
|
-
/// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
|
52
|
-
/// @param amount the amount to withdraw
|
53
|
-
/// @return withdrawnAmount the amount that was actually withdrawn
|
54
|
-
function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
|
55
|
-
|
56
41
|
}
|
@@ -6,8 +6,10 @@ import {StateId} from "../type/StateId.sol";
|
|
6
6
|
|
7
7
|
interface ILifecycle {
|
8
8
|
|
9
|
-
error ErrorNoLifecycle(ObjectType objectType);
|
9
|
+
error ErrorNoLifecycle(address contractAddress, ObjectType objectType);
|
10
|
+
error ErrorFromStateMissmatch(address contractAddress, ObjectType objectType, StateId actual, StateId required);
|
10
11
|
error ErrorInvalidStateTransition(
|
12
|
+
address contractAddress,
|
11
13
|
ObjectType objectType,
|
12
14
|
StateId fromStateId,
|
13
15
|
StateId toStateId
|
@@ -5,6 +5,7 @@ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
|
5
5
|
|
6
6
|
import {IRegistryLinked} from "./IRegistryLinked.sol";
|
7
7
|
import {NftId} from "../type/NftId.sol";
|
8
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
8
9
|
|
9
10
|
interface INftOwnable is
|
10
11
|
IERC165,
|
@@ -12,6 +13,7 @@ interface INftOwnable is
|
|
12
13
|
{
|
13
14
|
error ErrorNftOwnableInitialOwnerZero();
|
14
15
|
error ErrorNftOwnableNotOwner(address account);
|
16
|
+
error ErrorNftOwnableInvalidType(NftId nftId, ObjectType expectedObjectType);
|
15
17
|
|
16
18
|
error ErrorNftOwnableAlreadyLinked(NftId nftId);
|
17
19
|
error ErrorNftOwnableContractNotRegistered(address contractAddress);
|
@@ -9,37 +9,27 @@ import {ClaimId} from "../type/ClaimId.sol";
|
|
9
9
|
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
10
10
|
import {NftId} from "../type/NftId.sol";
|
11
11
|
import {PayoutId} from "../type/PayoutId.sol";
|
12
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
12
13
|
|
13
|
-
/// @dev
|
14
|
-
///
|
14
|
+
/// @dev Generic interface for contracts that need to hold policies and receive payouts.
|
15
|
+
/// The framework notifies policy holder contracts for policy creation/expiry, claim confirmation and payout execution
|
15
16
|
interface IPolicyHolder is
|
16
17
|
IERC165,
|
17
18
|
IERC721Receiver,
|
18
19
|
IRegistryLinked
|
19
20
|
{
|
20
21
|
|
21
|
-
/// @dev
|
22
|
-
///
|
23
|
-
function policyActivated(NftId policyNftId) external;
|
22
|
+
/// @dev Callback function that will be called after successful policy activation.
|
23
|
+
/// Active policies may open claims under the activated policy.
|
24
|
+
function policyActivated(NftId policyNftId, Timestamp activatedAt) external;
|
24
25
|
|
25
|
-
/// @dev
|
26
|
-
/// expired policies
|
27
|
-
|
28
|
-
function policyExpired(NftId policyNftId) external;
|
26
|
+
/// @dev Callback function to indicate the specified policy has expired.
|
27
|
+
/// expired policies no longer accept new claims.
|
28
|
+
function policyExpired(NftId policyNftId, Timestamp expiredAt) external;
|
29
29
|
|
30
|
-
/// @dev
|
31
|
-
/// the contract implements its use case specific handling for such requests.
|
32
|
-
/// eg. creation of a pending payout, a corresponding claim against one of the policies held by the IPolicyHolder
|
33
|
-
function requestPayout(NftId requestingPolicyNftId, Amount requestedPayoutAmount) external;
|
34
|
-
|
35
|
-
/// @dev callback function to notify the confirmation of the specified claim
|
36
|
-
/// active policies may open claims under the activated policy
|
30
|
+
/// @dev Callback function to notify the confirmation of the specified claim.
|
37
31
|
function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external;
|
38
32
|
|
39
|
-
/// @dev
|
40
|
-
function payoutExecuted(NftId policyNftId, PayoutId payoutId,
|
41
|
-
|
42
|
-
/// @dev determines policy and claim specific beneficiary address
|
43
|
-
/// returned address will override GIF default where the policy nft holder is treated as beneficiary
|
44
|
-
function getBeneficiary(NftId policyNftId, PayoutId payoutId) external view returns (address beneficiary);
|
33
|
+
/// @dev Callback function to notify the successful payout.
|
34
|
+
function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external;
|
45
35
|
}
|
@@ -3,11 +3,22 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {INftOwnable} from "./INftOwnable.sol";
|
5
5
|
import {IRegistry} from "../registry/IRegistry.sol";
|
6
|
+
import {VersionPart} from "../type/Version.sol";
|
6
7
|
|
8
|
+
/// @title IRegisterable
|
9
|
+
/// @dev Marks contracts that are intended to be registered in the registry.
|
10
|
+
///
|
7
11
|
interface IRegisterable is
|
8
12
|
INftOwnable
|
9
13
|
{
|
14
|
+
/// @dev retuns the GIF release version for this contract.
|
15
|
+
/// This
|
16
|
+
function getRelease() external pure returns (VersionPart release);
|
10
17
|
|
18
|
+
/// @dev retuns the object info relevant for registering for this contract
|
19
|
+
/// IMPORTANT information returned by this function may only be used
|
20
|
+
/// before the contract is registered in the registry.
|
21
|
+
/// Once registered this information MUST only be accessed via the registry.
|
11
22
|
function getInitialInfo()
|
12
23
|
external
|
13
24
|
view
|
@@ -11,13 +11,13 @@ contract InitializableERC165 is
|
|
11
11
|
mapping(bytes4 => bool) private _isSupported;
|
12
12
|
|
13
13
|
// @dev initializes with support for ERC165
|
14
|
-
function
|
14
|
+
function _initializeERC165() internal onlyInitializing() {
|
15
15
|
_isSupported[type(IERC165).interfaceId] = true;
|
16
16
|
}
|
17
17
|
|
18
18
|
// @dev register support for provided interfaceId
|
19
19
|
// includes initialization for ERC165_ID if not yet done
|
20
|
-
function
|
20
|
+
function _registerInterface(bytes4 interfaceId) internal onlyInitializing() {
|
21
21
|
_isSupported[interfaceId] = true;
|
22
22
|
}
|
23
23
|
|