@etherisc/gif-next 0.0.2-f11de3a-698 → 0.0.2-f13c010-035
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 +5 -2
- 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 +163 -309
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +91 -277
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +190 -292
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +107 -123
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -92
- 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 +1538 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +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 +29 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -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 +446 -81
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +335 -126
- 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 +137 -283
- 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 +66 -80
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +79 -265
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +103 -274
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +184 -229
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +114 -110
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +65 -32
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +91 -77
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +221 -151
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +102 -260
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +299 -326
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -101
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +136 -281
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +303 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +260 -140
- 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 +124 -97
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +358 -356
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -107
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +199 -309
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +136 -281
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +286 -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 +492 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +129 -221
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +65 -236
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +376 -287
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +206 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +120 -122
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +346 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +66 -80
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +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 +79 -265
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +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 +407 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +132 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +176 -293
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +106 -91
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +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 +55 -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 +84 -66
- 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 +73 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +415 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/IInstance.sol +10 -30
- package/contracts/instance/IInstanceService.sol +0 -20
- package/contracts/instance/Instance.sol +29 -51
- package/contracts/instance/InstanceAdmin.sol +45 -32
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +107 -25
- package/contracts/instance/InstanceService.sol +67 -97
- 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 -5
- package/contracts/instance/module/IPolicy.sol +24 -24
- 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 +47 -34
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +16 -28
- package/contracts/pool/BasicPoolAuthorization.sol +1 -2
- package/contracts/pool/BundleService.sol +108 -57
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +14 -4
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +49 -31
- package/contracts/pool/Pool.sol +54 -47
- package/contracts/pool/PoolService.sol +180 -162
- 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 +7 -6
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +313 -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 +31 -35
- 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 +374 -212
- 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 +117 -73
- 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 +55 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +342 -201
- package/contracts/registry/RegistryAdmin.sol +134 -51
- 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 -188
- package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
- package/contracts/shared/Component.sol +45 -54
- package/contracts/shared/ComponentService.sol +217 -182
- package/contracts/shared/ComponentServiceHelperLib.sol +118 -0
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +23 -14
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +10 -6
- package/contracts/shared/IComponentService.sol +26 -13
- 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 +72 -31
- 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 -9
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +20 -18
- package/contracts/shared/TokenHandler.sol +144 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +13 -32
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +25 -29
- 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 +15 -1
- 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 +2 -1
- 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,7 +11,7 @@ import {IOracleComponent} from "./IOracleComponent.sol";
|
|
11
11
|
import {IOracleService} from "./IOracleService.sol";
|
12
12
|
import {IRegistry} from "../registry/IRegistry.sol";
|
13
13
|
import {NftId} from "../type/NftId.sol";
|
14
|
-
import {ObjectType, COMPONENT, ORACLE,
|
14
|
+
import {ObjectType, COMPONENT, ORACLE, PRODUCT} from "../type/ObjectType.sol";
|
15
15
|
import {RequestId} from "../type/RequestId.sol";
|
16
16
|
import {StateId, ACTIVE, KEEP_STATE, FULFILLED, FAILED, CANCELLED} from "../type/StateId.sol";
|
17
17
|
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
@@ -27,14 +27,16 @@ contract OracleService is
|
|
27
27
|
bytes memory data
|
28
28
|
)
|
29
29
|
internal
|
30
|
-
initializer
|
31
30
|
virtual override
|
31
|
+
initializer()
|
32
32
|
{
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
(
|
34
|
+
address registryAddress,
|
35
|
+
address authority
|
36
|
+
) = abi.decode(data, (address, address));
|
37
|
+
|
38
|
+
_initializeService(registryAddress, authority, owner);
|
39
|
+
_registerInterface(type(IOracleService).interfaceId);
|
38
40
|
}
|
39
41
|
|
40
42
|
function request(
|
@@ -46,6 +48,7 @@ contract OracleService is
|
|
46
48
|
external
|
47
49
|
virtual
|
48
50
|
// restricted() // add authz
|
51
|
+
onlyNftOfType(oracleNftId, ORACLE())
|
49
52
|
returns (
|
50
53
|
RequestId requestId
|
51
54
|
)
|
@@ -64,35 +67,45 @@ contract OracleService is
|
|
64
67
|
ORACLE(),
|
65
68
|
true); // only active
|
66
69
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
70
|
+
{
|
71
|
+
// check that requester and oracle share same product cluster
|
72
|
+
if (componentInfo.objectType == PRODUCT()) {
|
73
|
+
if (oracleInfo.parentNftId != componentInfo.nftId) {
|
74
|
+
revert ErrorOracleServiceProductMismatch(componentInfo.objectType, componentInfo.nftId, oracleInfo.parentNftId);
|
75
|
+
}
|
76
|
+
} else {
|
77
|
+
if (oracleInfo.parentNftId != componentInfo.parentNftId) {
|
78
|
+
revert ErrorOracleServiceProductMismatch(componentInfo.objectType, componentInfo.parentNftId, oracleInfo.parentNftId);
|
79
|
+
}
|
80
|
+
}
|
71
81
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
82
|
+
// check expiriyAt >= now
|
83
|
+
if (expiryAt < TimestampLib.blockTimestamp()) {
|
84
|
+
revert ErrorOracleServiceExpiryInThePast(TimestampLib.blockTimestamp(), expiryAt);
|
85
|
+
}
|
76
86
|
|
77
|
-
|
78
|
-
|
79
|
-
|
87
|
+
// check callbackMethodName.length > 0
|
88
|
+
if (bytes(callbackMethodName).length == 0) {
|
89
|
+
revert ErrorOracleServiceCallbackMethodNameEmpty();
|
90
|
+
}
|
80
91
|
}
|
81
92
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
93
|
+
{
|
94
|
+
// create request info
|
95
|
+
IOracle.RequestInfo memory request = IOracle.RequestInfo({
|
96
|
+
requesterNftId: componentNftId,
|
97
|
+
callbackMethodName: callbackMethodName,
|
98
|
+
oracleNftId: oracleNftId,
|
99
|
+
requestData: requestData,
|
100
|
+
responseData: "",
|
101
|
+
respondedAt: TimestampLib.zero(),
|
102
|
+
expiredAt: expiryAt,
|
103
|
+
isCancelled: false
|
104
|
+
});
|
105
|
+
|
106
|
+
// store request with instance
|
107
|
+
requestId = instance.getInstanceStore().createRequest(request);
|
108
|
+
}
|
96
109
|
|
97
110
|
// call oracle component
|
98
111
|
IOracleComponent(oracleInfo.objectAddress).request(
|
@@ -214,7 +227,7 @@ contract OracleService is
|
|
214
227
|
|
215
228
|
// call oracle component
|
216
229
|
// TODO add check that oracle is active?
|
217
|
-
address oracleAddress = getRegistry().
|
230
|
+
address oracleAddress = getRegistry().getObjectAddress(request.oracleNftId);
|
218
231
|
IOracleComponent(oracleAddress).cancel(requestId);
|
219
232
|
|
220
233
|
emit LogOracleServiceRequestCancelled(requestId, requesterNftId);
|
@@ -267,7 +280,7 @@ contract OracleService is
|
|
267
280
|
returns(IInstance instance)
|
268
281
|
{
|
269
282
|
NftId instanceNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
|
270
|
-
address instanceAddress = getRegistry().
|
283
|
+
address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
|
271
284
|
return IInstance(instanceAddress);
|
272
285
|
}
|
273
286
|
|
@@ -12,15 +12,15 @@ contract OracleServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with 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
|
-
OracleService
|
21
|
-
bytes memory data = abi.encode(
|
22
|
-
IVersionable versionable =
|
23
|
-
|
19
|
+
OracleService svc = new OracleService{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
|
|
@@ -1,22 +1,14 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Amount
|
5
|
-
import {
|
6
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
4
|
+
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {Fee} from "../type/Fee.sol";
|
7
6
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
import {
|
11
|
-
import {IComponents} from "../instance/module/IComponents.sol";
|
12
|
-
import {IComponentService} from "../shared/IComponentService.sol";
|
13
|
-
import {NftId, NftIdLib} from "../type/NftId.sol";
|
14
|
-
import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
|
15
|
-
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
7
|
+
import {NftId} from "../type/NftId.sol";
|
8
|
+
import {BUNDLE} from "../type/ObjectType.sol";
|
9
|
+
import {RoleId} from "../type/RoleId.sol";
|
16
10
|
import {Seconds} from "../type/Seconds.sol";
|
17
11
|
import {Timestamp} from "../type/Timestamp.sol";
|
18
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
19
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
20
12
|
|
21
13
|
import {Pool} from "./Pool.sol";
|
22
14
|
|
@@ -26,7 +18,7 @@ abstract contract BasicPool is
|
|
26
18
|
|
27
19
|
function _initializeBasicPool(
|
28
20
|
address registry,
|
29
|
-
NftId
|
21
|
+
NftId productNftId,
|
30
22
|
IAuthorization authorization,
|
31
23
|
address token,
|
32
24
|
string memory name,
|
@@ -38,13 +30,12 @@ abstract contract BasicPool is
|
|
38
30
|
{
|
39
31
|
_initializePool(
|
40
32
|
registry,
|
41
|
-
|
33
|
+
productNftId,
|
42
34
|
name,
|
43
35
|
token,
|
44
36
|
authorization,
|
45
37
|
false, // isInterceptingNftTransfers,
|
46
38
|
initialOwner,
|
47
|
-
"", // registryData
|
48
39
|
""); // componentData
|
49
40
|
}
|
50
41
|
|
@@ -56,6 +47,7 @@ abstract contract BasicPool is
|
|
56
47
|
virtual
|
57
48
|
restricted()
|
58
49
|
onlyBundleOwner(bundleNftId)
|
50
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
59
51
|
{
|
60
52
|
_stake(bundleNftId, amount);
|
61
53
|
}
|
@@ -69,6 +61,7 @@ abstract contract BasicPool is
|
|
69
61
|
virtual
|
70
62
|
restricted()
|
71
63
|
onlyBundleOwner(bundleNftId)
|
64
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
72
65
|
{
|
73
66
|
_unstake(bundleNftId, amount);
|
74
67
|
}
|
@@ -82,6 +75,7 @@ abstract contract BasicPool is
|
|
82
75
|
virtual
|
83
76
|
restricted()
|
84
77
|
onlyBundleOwner(bundleNftId)
|
78
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
85
79
|
returns(Timestamp newExpiredAt)
|
86
80
|
{
|
87
81
|
return _extend(bundleNftId, lifetimeExtension);
|
@@ -93,6 +87,7 @@ abstract contract BasicPool is
|
|
93
87
|
virtual
|
94
88
|
restricted()
|
95
89
|
onlyBundleOwner(bundleNftId)
|
90
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
96
91
|
{
|
97
92
|
_lockBundle(bundleNftId);
|
98
93
|
}
|
@@ -103,18 +98,20 @@ abstract contract BasicPool is
|
|
103
98
|
virtual
|
104
99
|
restricted()
|
105
100
|
onlyBundleOwner(bundleNftId)
|
101
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
106
102
|
{
|
107
103
|
_unlockBundle(bundleNftId);
|
108
104
|
}
|
109
105
|
|
110
106
|
|
111
|
-
function
|
107
|
+
function closeBundle(NftId bundleNftId)
|
112
108
|
public
|
113
109
|
virtual
|
114
110
|
restricted()
|
115
111
|
onlyBundleOwner(bundleNftId)
|
112
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
116
113
|
{
|
117
|
-
|
114
|
+
_closeBundle(bundleNftId);
|
118
115
|
}
|
119
116
|
|
120
117
|
|
@@ -126,6 +123,7 @@ abstract contract BasicPool is
|
|
126
123
|
virtual
|
127
124
|
restricted()
|
128
125
|
onlyBundleOwner(bundleNftId)
|
126
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
129
127
|
{
|
130
128
|
_setBundleFee(bundleNftId, fee);
|
131
129
|
}
|
@@ -141,16 +139,6 @@ abstract contract BasicPool is
|
|
141
139
|
}
|
142
140
|
|
143
141
|
|
144
|
-
function setBundleOwnerRole(RoleId bundleOwnerRole)
|
145
|
-
public
|
146
|
-
virtual
|
147
|
-
restricted()
|
148
|
-
onlyOwner()
|
149
|
-
{
|
150
|
-
_setBundleOwnerRole(bundleOwnerRole);
|
151
|
-
}
|
152
|
-
|
153
|
-
|
154
142
|
function setFees(
|
155
143
|
Fee memory poolFee,
|
156
144
|
Fee memory stakingFee,
|
@@ -40,11 +40,10 @@ contract BasicPoolAuthorization
|
|
40
40
|
_authorize(functions, BasicPool.extend.selector, "extend");
|
41
41
|
_authorize(functions, BasicPool.lockBundle.selector, "lockBundle");
|
42
42
|
_authorize(functions, BasicPool.unlockBundle.selector, "unlockBundle");
|
43
|
-
_authorize(functions, BasicPool.
|
43
|
+
_authorize(functions, BasicPool.closeBundle.selector, "closeBundle");
|
44
44
|
_authorize(functions, BasicPool.setBundleFee.selector, "setBundleFee");
|
45
45
|
|
46
46
|
_authorize(functions, BasicPool.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
|
47
|
-
_authorize(functions, BasicPool.setBundleOwnerRole.selector, "setBundleOwnerRole");
|
48
47
|
_authorize(functions, BasicPool.setFees.selector, "setFees");
|
49
48
|
_authorize(functions, BasicPool.stake.selector, "stake");
|
50
49
|
_authorize(functions, BasicPool.unstake.selector, "unstake");
|
@@ -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 {IBundle} from "../instance/module/IBundle.sol";
|
7
5
|
import {IBundleService} from "./IBundleService.sol";
|
8
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
@@ -16,10 +14,10 @@ import {IPolicy} from "../instance/module/IPolicy.sol";
|
|
16
14
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
17
15
|
import {BundleSet} from "../instance/BundleSet.sol";
|
18
16
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
19
|
-
import {Fee
|
17
|
+
import {Fee} from "../type/Fee.sol";
|
20
18
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
21
19
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
22
|
-
import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
|
20
|
+
import {ObjectType, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
|
23
21
|
import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
|
24
22
|
import {Seconds} from "../type/Seconds.sol";
|
25
23
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
@@ -42,20 +40,20 @@ contract BundleService is
|
|
42
40
|
bytes memory data
|
43
41
|
)
|
44
42
|
internal
|
45
|
-
initializer
|
46
43
|
virtual override
|
44
|
+
initializer()
|
47
45
|
{
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
46
|
+
(
|
47
|
+
address registryAddress,
|
48
|
+
address authority
|
49
|
+
) = abi.decode(data, (address, address));
|
50
|
+
|
51
|
+
_initializeService(registryAddress, authority, owner);
|
54
52
|
|
55
53
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
56
54
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
57
55
|
|
58
|
-
|
56
|
+
_registerInterface(type(IBundleService).interfaceId);
|
59
57
|
}
|
60
58
|
|
61
59
|
|
@@ -66,6 +64,8 @@ contract BundleService is
|
|
66
64
|
external
|
67
65
|
virtual
|
68
66
|
{
|
67
|
+
_checkNftType(bundleNftId, BUNDLE());
|
68
|
+
|
69
69
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
70
70
|
InstanceReader instanceReader = instance.getInstanceReader();
|
71
71
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
@@ -96,6 +96,8 @@ contract BundleService is
|
|
96
96
|
restricted
|
97
97
|
returns(NftId bundleNftId)
|
98
98
|
{
|
99
|
+
_checkNftType(poolNftId, POOL());
|
100
|
+
|
99
101
|
// register bundle with registry
|
100
102
|
bundleNftId = _registryService.registerBundle(
|
101
103
|
IRegistry.ObjectInfo(
|
@@ -123,17 +125,18 @@ contract BundleService is
|
|
123
125
|
})
|
124
126
|
);
|
125
127
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
128
|
+
if (stakingAmount.gtz()) {
|
129
|
+
// bundle book keeping
|
130
|
+
_componentService.increaseBundleBalance(
|
131
|
+
instanceStore,
|
132
|
+
bundleNftId,
|
133
|
+
stakingAmount,
|
134
|
+
AmountLib.zero()); // fee amount
|
135
|
+
}
|
132
136
|
|
133
137
|
// put bundle under bundle managemet
|
134
138
|
BundleSet bundleManager = instance.getBundleSet();
|
135
139
|
bundleManager.add(bundleNftId);
|
136
|
-
|
137
140
|
// TODO add logging
|
138
141
|
}
|
139
142
|
|
@@ -149,26 +152,35 @@ contract BundleService is
|
|
149
152
|
virtual
|
150
153
|
restricted()
|
151
154
|
{
|
155
|
+
_checkNftType(policyNftId, POLICY());
|
156
|
+
_checkNftType(bundleNftId, BUNDLE());
|
157
|
+
|
152
158
|
InstanceReader instanceReader = instance.getInstanceReader();
|
153
|
-
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
154
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
155
159
|
|
156
|
-
|
157
|
-
|
158
|
-
|
160
|
+
{
|
161
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
162
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
163
|
+
|
164
|
+
// ensure bundle is active and not yet expired
|
165
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
166
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
167
|
+
}
|
159
168
|
}
|
160
169
|
|
161
|
-
// ensure bundle capacity is sufficent to collateralize policy
|
162
170
|
InstanceStore instanceStore = instance.getInstanceStore();
|
163
|
-
(
|
164
|
-
Amount balanceAmount,
|
165
|
-
Amount lockedAmount,
|
166
|
-
Amount feeAmount
|
167
|
-
) = instanceStore.getAmounts(bundleNftId);
|
168
171
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
+
{
|
173
|
+
// ensure bundle capacity is sufficent to collateralize policy
|
174
|
+
(
|
175
|
+
Amount balanceAmount,
|
176
|
+
Amount lockedAmount,
|
177
|
+
Amount feeAmount
|
178
|
+
) = instanceStore.getAmounts(bundleNftId);
|
179
|
+
|
180
|
+
Amount capacity = balanceAmount - (lockedAmount + feeAmount);
|
181
|
+
if(capacity < collateralAmount) {
|
182
|
+
revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
|
183
|
+
}
|
172
184
|
}
|
173
185
|
|
174
186
|
// updated locked amount
|
@@ -183,6 +195,8 @@ contract BundleService is
|
|
183
195
|
external
|
184
196
|
virtual
|
185
197
|
{
|
198
|
+
_checkNftType(bundleNftId, BUNDLE());
|
199
|
+
|
186
200
|
(,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
187
201
|
|
188
202
|
// udpate bundle state
|
@@ -200,6 +214,8 @@ contract BundleService is
|
|
200
214
|
external
|
201
215
|
virtual
|
202
216
|
{
|
217
|
+
_checkNftType(bundleNftId, BUNDLE());
|
218
|
+
|
203
219
|
(,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
204
220
|
|
205
221
|
// udpate bundle state
|
@@ -220,9 +236,11 @@ contract BundleService is
|
|
220
236
|
external
|
221
237
|
virtual
|
222
238
|
restricted
|
239
|
+
returns (Amount unstakedAmount, Amount feeAmount)
|
223
240
|
{
|
224
|
-
|
225
|
-
|
241
|
+
_checkNftType(bundleNftId, BUNDLE());
|
242
|
+
|
243
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
226
244
|
|
227
245
|
// ensure no open policies attached to bundle
|
228
246
|
BundleSet bundleManager = instance.getBundleSet();
|
@@ -231,8 +249,18 @@ contract BundleService is
|
|
231
249
|
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
232
250
|
}
|
233
251
|
|
234
|
-
|
235
|
-
|
252
|
+
{
|
253
|
+
// update bundle state
|
254
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
255
|
+
instanceStore.updateBundleState(bundleNftId, CLOSED());
|
256
|
+
bundleManager.lock(bundleNftId);
|
257
|
+
|
258
|
+
// decrease bundle counters
|
259
|
+
Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
|
260
|
+
feeAmount = instanceReader.getFeeAmount(bundleNftId);
|
261
|
+
unstakedAmount = balanceAmountWithFees - feeAmount;
|
262
|
+
_componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
|
263
|
+
}
|
236
264
|
}
|
237
265
|
|
238
266
|
/// @inheritdoc IBundleService
|
@@ -245,6 +273,8 @@ contract BundleService is
|
|
245
273
|
virtual
|
246
274
|
// TODO: restricted() (once #462 is done)
|
247
275
|
{
|
276
|
+
_checkNftType(bundleNftId, BUNDLE());
|
277
|
+
|
248
278
|
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
249
279
|
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
250
280
|
|
@@ -272,6 +302,8 @@ contract BundleService is
|
|
272
302
|
// TODO: restricted() (once #462 is done)
|
273
303
|
returns (Amount unstakedAmount)
|
274
304
|
{
|
305
|
+
_checkNftType(bundleNftId, BUNDLE());
|
306
|
+
|
275
307
|
InstanceStore instanceStore = instance.getInstanceStore();
|
276
308
|
(
|
277
309
|
Amount balanceAmount,
|
@@ -279,7 +311,7 @@ contract BundleService is
|
|
279
311
|
Amount feeAmount
|
280
312
|
) = instanceStore.getAmounts(bundleNftId);
|
281
313
|
|
282
|
-
|
314
|
+
unstakedAmount = amount;
|
283
315
|
Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
|
284
316
|
|
285
317
|
// if amount is max, then unstake all available
|
@@ -297,8 +329,6 @@ contract BundleService is
|
|
297
329
|
bundleNftId,
|
298
330
|
unstakedAmount,
|
299
331
|
AmountLib.zero());
|
300
|
-
|
301
|
-
return unstakedAmount;
|
302
332
|
}
|
303
333
|
|
304
334
|
/// @inheritdoc IBundleService
|
@@ -308,6 +338,8 @@ contract BundleService is
|
|
308
338
|
// TODO: restricted() (once #462 is done)
|
309
339
|
returns (Timestamp extendedExpiredAt)
|
310
340
|
{
|
341
|
+
_checkNftType(bundleNftId, BUNDLE());
|
342
|
+
|
311
343
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
312
344
|
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
313
345
|
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
@@ -345,6 +377,9 @@ contract BundleService is
|
|
345
377
|
virtual
|
346
378
|
restricted()
|
347
379
|
{
|
380
|
+
_checkNftType(policyNftId, POLICY());
|
381
|
+
_checkNftType(bundleNftId, BUNDLE());
|
382
|
+
|
348
383
|
instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
|
349
384
|
}
|
350
385
|
|
@@ -357,8 +392,10 @@ contract BundleService is
|
|
357
392
|
virtual
|
358
393
|
restricted
|
359
394
|
{
|
395
|
+
_checkNftType(policyNftId, POLICY());
|
396
|
+
|
360
397
|
// ensure policy is closeable
|
361
|
-
if (!
|
398
|
+
if (!policyIsCloseable(instance, policyNftId)) {
|
362
399
|
revert ErrorBundleServicePolicyNotCloseable(policyNftId);
|
363
400
|
}
|
364
401
|
|
@@ -372,13 +409,15 @@ contract BundleService is
|
|
372
409
|
// TODO: restricted() (once #462 is done)
|
373
410
|
returns (Amount withdrawnAmount)
|
374
411
|
{
|
412
|
+
_checkNftType(bundleNftId, BUNDLE());
|
413
|
+
|
375
414
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
376
415
|
InstanceReader reader = instance.getInstanceReader();
|
377
416
|
|
378
417
|
IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
|
379
418
|
address poolWallet = poolInfo.wallet;
|
380
419
|
|
381
|
-
IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
420
|
+
// IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
382
421
|
|
383
422
|
// determine withdrawn amount
|
384
423
|
withdrawnAmount = amount;
|
@@ -390,17 +429,6 @@ contract BundleService is
|
|
390
429
|
}
|
391
430
|
}
|
392
431
|
|
393
|
-
if (withdrawnAmount.eqz()) {
|
394
|
-
revert ErrorBundleServiceFeesWithdrawAmountIsZero();
|
395
|
-
}
|
396
|
-
|
397
|
-
// check allowance
|
398
|
-
IERC20Metadata token = IERC20Metadata(poolInfo.token);
|
399
|
-
uint256 tokenAllowance = token.allowance(poolWallet, address(poolInfo.tokenHandler));
|
400
|
-
if (tokenAllowance < withdrawnAmount.toInt()) {
|
401
|
-
revert ErrorBundleServiceWalletAllowanceTooSmall(poolWallet, address(poolInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
|
402
|
-
}
|
403
|
-
|
404
432
|
// decrease fee counters by withdrawnAmount
|
405
433
|
{
|
406
434
|
InstanceStore store = instance.getInstanceStore();
|
@@ -413,13 +441,36 @@ contract BundleService is
|
|
413
441
|
// transfer amount to bundle owner
|
414
442
|
{
|
415
443
|
address owner = getRegistry().ownerOf(bundleNftId);
|
416
|
-
|
417
|
-
poolInfo.tokenHandler.
|
418
|
-
|
419
|
-
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(token), withdrawnAmount);
|
444
|
+
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
|
445
|
+
poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
|
420
446
|
}
|
421
447
|
}
|
422
448
|
|
449
|
+
/// @inheritdoc IBundleService
|
450
|
+
function policyIsCloseable(IInstance instance, NftId policyNftId)
|
451
|
+
public
|
452
|
+
view
|
453
|
+
returns (bool isCloseable)
|
454
|
+
{
|
455
|
+
_checkNftType(policyNftId, POLICY());
|
456
|
+
|
457
|
+
IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
458
|
+
|
459
|
+
if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
|
460
|
+
if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
|
461
|
+
if (info.closedAt.gtz()) { return false; } // not closeable: already closed
|
462
|
+
if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
|
463
|
+
|
464
|
+
// closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
|
465
|
+
if (info.claimAmount == info.sumInsuredAmount) { return true; }
|
466
|
+
|
467
|
+
// not closeable: not yet expired
|
468
|
+
if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
|
469
|
+
|
470
|
+
// all conditionsl to close the policy are met
|
471
|
+
return true;
|
472
|
+
}
|
473
|
+
|
423
474
|
/// @dev links policy to bundle
|
424
475
|
function _linkPolicy(IInstance instance, NftId policyNftId)
|
425
476
|
internal
|
@@ -12,15 +12,15 @@ contract BundleServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with pool service implementation
|
13
13
|
constructor(
|
14
14
|
address authority,
|
15
|
-
address
|
15
|
+
address registry,
|
16
16
|
bytes32 salt
|
17
17
|
)
|
18
|
-
ProxyManager(registryAddress)
|
19
18
|
{
|
20
|
-
BundleService
|
21
|
-
bytes memory data = abi.encode(
|
22
|
-
IVersionable versionable =
|
23
|
-
|
19
|
+
BundleService svc = new BundleService{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
|
|