@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
@@ -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
|
|
@@ -65,7 +63,10 @@ contract BundleService is
|
|
65
63
|
)
|
66
64
|
external
|
67
65
|
virtual
|
66
|
+
restricted()
|
68
67
|
{
|
68
|
+
_checkNftType(bundleNftId, BUNDLE());
|
69
|
+
|
69
70
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
70
71
|
InstanceReader instanceReader = instance.getInstanceReader();
|
71
72
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
@@ -83,19 +84,18 @@ contract BundleService is
|
|
83
84
|
|
84
85
|
|
85
86
|
function create(
|
86
|
-
IInstance instance,
|
87
|
-
NftId poolNftId,
|
88
87
|
address owner,
|
89
88
|
Fee memory bundleFee,
|
90
|
-
Amount stakingAmount,
|
91
89
|
Seconds lifetime,
|
92
90
|
bytes calldata filter
|
93
91
|
)
|
94
92
|
external
|
95
|
-
|
96
|
-
restricted
|
93
|
+
virtual
|
94
|
+
restricted()
|
97
95
|
returns(NftId bundleNftId)
|
98
96
|
{
|
97
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
98
|
+
|
99
99
|
// register bundle with registry
|
100
100
|
bundleNftId = _registryService.registerBundle(
|
101
101
|
IRegistry.ObjectInfo(
|
@@ -123,18 +123,11 @@ contract BundleService is
|
|
123
123
|
})
|
124
124
|
);
|
125
125
|
|
126
|
-
// bundle book keeping
|
127
|
-
_componentService.increaseBundleBalance(
|
128
|
-
instanceStore,
|
129
|
-
bundleNftId,
|
130
|
-
stakingAmount,
|
131
|
-
AmountLib.zero()); // fee amount
|
132
|
-
|
133
126
|
// put bundle under bundle managemet
|
134
127
|
BundleSet bundleManager = instance.getBundleSet();
|
135
128
|
bundleManager.add(bundleNftId);
|
136
129
|
|
137
|
-
|
130
|
+
emit LogBundleServiceBundleCreated(bundleNftId, poolNftId);
|
138
131
|
}
|
139
132
|
|
140
133
|
|
@@ -149,26 +142,35 @@ contract BundleService is
|
|
149
142
|
virtual
|
150
143
|
restricted()
|
151
144
|
{
|
145
|
+
_checkNftType(policyNftId, POLICY());
|
146
|
+
_checkNftType(bundleNftId, BUNDLE());
|
147
|
+
|
152
148
|
InstanceReader instanceReader = instance.getInstanceReader();
|
153
|
-
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
154
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
155
149
|
|
156
|
-
|
157
|
-
|
158
|
-
|
150
|
+
{
|
151
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
152
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
153
|
+
|
154
|
+
// ensure bundle is active and not yet expired
|
155
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
156
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
157
|
+
}
|
159
158
|
}
|
160
159
|
|
161
|
-
// ensure bundle capacity is sufficent to collateralize policy
|
162
160
|
InstanceStore instanceStore = instance.getInstanceStore();
|
163
|
-
(
|
164
|
-
Amount balanceAmount,
|
165
|
-
Amount lockedAmount,
|
166
|
-
Amount feeAmount
|
167
|
-
) = instanceStore.getAmounts(bundleNftId);
|
168
161
|
|
169
|
-
|
170
|
-
|
171
|
-
|
162
|
+
{
|
163
|
+
// ensure bundle capacity is sufficent to collateralize policy
|
164
|
+
(
|
165
|
+
Amount balanceAmount,
|
166
|
+
Amount lockedAmount,
|
167
|
+
Amount feeAmount
|
168
|
+
) = instanceStore.getAmounts(bundleNftId);
|
169
|
+
|
170
|
+
Amount capacity = balanceAmount - (lockedAmount + feeAmount);
|
171
|
+
if(capacity < collateralAmount) {
|
172
|
+
revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
|
173
|
+
}
|
172
174
|
}
|
173
175
|
|
174
176
|
// updated locked amount
|
@@ -182,7 +184,10 @@ contract BundleService is
|
|
182
184
|
function lock(NftId bundleNftId)
|
183
185
|
external
|
184
186
|
virtual
|
187
|
+
restricted()
|
185
188
|
{
|
189
|
+
_checkNftType(bundleNftId, BUNDLE());
|
190
|
+
|
186
191
|
(,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
187
192
|
|
188
193
|
// udpate bundle state
|
@@ -199,7 +204,10 @@ contract BundleService is
|
|
199
204
|
function unlock(NftId bundleNftId)
|
200
205
|
external
|
201
206
|
virtual
|
207
|
+
restricted()
|
202
208
|
{
|
209
|
+
_checkNftType(bundleNftId, BUNDLE());
|
210
|
+
|
203
211
|
(,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
204
212
|
|
205
213
|
// udpate bundle state
|
@@ -219,10 +227,12 @@ contract BundleService is
|
|
219
227
|
)
|
220
228
|
external
|
221
229
|
virtual
|
222
|
-
restricted
|
230
|
+
restricted()
|
231
|
+
returns (Amount unstakedAmount, Amount feeAmount)
|
223
232
|
{
|
224
|
-
|
225
|
-
|
233
|
+
_checkNftType(bundleNftId, BUNDLE());
|
234
|
+
|
235
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
226
236
|
|
227
237
|
// ensure no open policies attached to bundle
|
228
238
|
BundleSet bundleManager = instance.getBundleSet();
|
@@ -231,8 +241,18 @@ contract BundleService is
|
|
231
241
|
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
232
242
|
}
|
233
243
|
|
234
|
-
|
235
|
-
|
244
|
+
{
|
245
|
+
// update bundle state
|
246
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
247
|
+
instanceStore.updateBundleState(bundleNftId, CLOSED());
|
248
|
+
bundleManager.lock(bundleNftId);
|
249
|
+
|
250
|
+
// decrease bundle counters
|
251
|
+
Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
|
252
|
+
feeAmount = instanceReader.getFeeAmount(bundleNftId);
|
253
|
+
unstakedAmount = balanceAmountWithFees - feeAmount;
|
254
|
+
_componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
|
255
|
+
}
|
236
256
|
}
|
237
257
|
|
238
258
|
/// @inheritdoc IBundleService
|
@@ -243,8 +263,10 @@ contract BundleService is
|
|
243
263
|
)
|
244
264
|
external
|
245
265
|
virtual
|
246
|
-
|
266
|
+
restricted()
|
247
267
|
{
|
268
|
+
_checkNftType(bundleNftId, BUNDLE());
|
269
|
+
|
248
270
|
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
249
271
|
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
250
272
|
|
@@ -269,9 +291,11 @@ contract BundleService is
|
|
269
291
|
)
|
270
292
|
external
|
271
293
|
virtual
|
272
|
-
|
294
|
+
restricted()
|
273
295
|
returns (Amount unstakedAmount)
|
274
296
|
{
|
297
|
+
_checkNftType(bundleNftId, BUNDLE());
|
298
|
+
|
275
299
|
InstanceStore instanceStore = instance.getInstanceStore();
|
276
300
|
(
|
277
301
|
Amount balanceAmount,
|
@@ -279,7 +303,7 @@ contract BundleService is
|
|
279
303
|
Amount feeAmount
|
280
304
|
) = instanceStore.getAmounts(bundleNftId);
|
281
305
|
|
282
|
-
|
306
|
+
unstakedAmount = amount;
|
283
307
|
Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
|
284
308
|
|
285
309
|
// if amount is max, then unstake all available
|
@@ -297,17 +321,17 @@ contract BundleService is
|
|
297
321
|
bundleNftId,
|
298
322
|
unstakedAmount,
|
299
323
|
AmountLib.zero());
|
300
|
-
|
301
|
-
return unstakedAmount;
|
302
324
|
}
|
303
325
|
|
304
326
|
/// @inheritdoc IBundleService
|
305
327
|
function extend(NftId bundleNftId, Seconds lifetimeExtension)
|
306
328
|
external
|
307
329
|
virtual
|
308
|
-
|
330
|
+
restricted()
|
309
331
|
returns (Timestamp extendedExpiredAt)
|
310
332
|
{
|
333
|
+
_checkNftType(bundleNftId, BUNDLE());
|
334
|
+
|
311
335
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
312
336
|
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
313
337
|
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
@@ -345,6 +369,9 @@ contract BundleService is
|
|
345
369
|
virtual
|
346
370
|
restricted()
|
347
371
|
{
|
372
|
+
_checkNftType(policyNftId, POLICY());
|
373
|
+
_checkNftType(bundleNftId, BUNDLE());
|
374
|
+
|
348
375
|
instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
|
349
376
|
}
|
350
377
|
|
@@ -357,8 +384,10 @@ contract BundleService is
|
|
357
384
|
virtual
|
358
385
|
restricted
|
359
386
|
{
|
387
|
+
_checkNftType(policyNftId, POLICY());
|
388
|
+
|
360
389
|
// ensure policy is closeable
|
361
|
-
if (!
|
390
|
+
if (!policyIsCloseable(instance, policyNftId)) {
|
362
391
|
revert ErrorBundleServicePolicyNotCloseable(policyNftId);
|
363
392
|
}
|
364
393
|
|
@@ -369,16 +398,18 @@ contract BundleService is
|
|
369
398
|
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
370
399
|
public
|
371
400
|
virtual
|
372
|
-
|
401
|
+
restricted()
|
373
402
|
returns (Amount withdrawnAmount)
|
374
403
|
{
|
404
|
+
_checkNftType(bundleNftId, BUNDLE());
|
405
|
+
|
375
406
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
376
407
|
InstanceReader reader = instance.getInstanceReader();
|
377
408
|
|
378
409
|
IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
|
379
|
-
address poolWallet = poolInfo.
|
410
|
+
address poolWallet = poolInfo.tokenHandler.getWallet();
|
380
411
|
|
381
|
-
IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
412
|
+
// IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
382
413
|
|
383
414
|
// determine withdrawn amount
|
384
415
|
withdrawnAmount = amount;
|
@@ -390,17 +421,6 @@ contract BundleService is
|
|
390
421
|
}
|
391
422
|
}
|
392
423
|
|
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
424
|
// decrease fee counters by withdrawnAmount
|
405
425
|
{
|
406
426
|
InstanceStore store = instance.getInstanceStore();
|
@@ -413,13 +433,36 @@ contract BundleService is
|
|
413
433
|
// transfer amount to bundle owner
|
414
434
|
{
|
415
435
|
address owner = getRegistry().ownerOf(bundleNftId);
|
416
|
-
|
417
|
-
poolInfo.tokenHandler.
|
418
|
-
|
419
|
-
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(token), withdrawnAmount);
|
436
|
+
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
|
437
|
+
poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
|
420
438
|
}
|
421
439
|
}
|
422
440
|
|
441
|
+
/// @inheritdoc IBundleService
|
442
|
+
function policyIsCloseable(IInstance instance, NftId policyNftId)
|
443
|
+
public
|
444
|
+
view
|
445
|
+
returns (bool isCloseable)
|
446
|
+
{
|
447
|
+
_checkNftType(policyNftId, POLICY());
|
448
|
+
|
449
|
+
IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
450
|
+
|
451
|
+
if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
|
452
|
+
if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
|
453
|
+
if (info.closedAt.gtz()) { return false; } // not closeable: already closed
|
454
|
+
if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
|
455
|
+
|
456
|
+
// closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
|
457
|
+
if (info.claimAmount == info.sumInsuredAmount) { return true; }
|
458
|
+
|
459
|
+
// not closeable: not yet expired
|
460
|
+
if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
|
461
|
+
|
462
|
+
// all conditionsl to close the policy are met
|
463
|
+
return true;
|
464
|
+
}
|
465
|
+
|
423
466
|
/// @dev links policy to bundle
|
424
467
|
function _linkPolicy(IInstance instance, NftId policyNftId)
|
425
468
|
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
|
|
@@ -13,6 +13,7 @@ import {Timestamp} from "../type/Timestamp.sol";
|
|
13
13
|
|
14
14
|
interface IBundleService is IService {
|
15
15
|
|
16
|
+
event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId);
|
16
17
|
event LogBundleServiceBundleActivated(NftId bundleNftId);
|
17
18
|
event LogBundleServiceBundleLocked(NftId bundleNftId);
|
18
19
|
|
@@ -27,9 +28,7 @@ interface IBundleService is IService {
|
|
27
28
|
error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
|
28
29
|
|
29
30
|
error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
30
|
-
|
31
|
-
error ErrorBundleServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
|
32
|
-
|
31
|
+
|
33
32
|
error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
|
34
33
|
|
35
34
|
error ErrorBundleServiceExtensionLifetimeIsZero();
|
@@ -37,14 +36,10 @@ interface IBundleService is IService {
|
|
37
36
|
event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
|
38
37
|
event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
|
39
38
|
|
40
|
-
/// @dev
|
41
|
-
/// may only be called by pool service
|
39
|
+
/// @dev Create a new bundle for the specified attributes.
|
42
40
|
function create(
|
43
|
-
IInstance instance, // instance relevant for bundle
|
44
|
-
NftId poolNftId, // the pool the bundle will be linked to
|
45
41
|
address owner, // initial bundle owner
|
46
42
|
Fee memory fee, // fees deducted from premium that go to bundle owner
|
47
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
48
43
|
Seconds lifetime, // initial duration for which new policies are covered
|
49
44
|
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
50
45
|
)
|
@@ -81,10 +76,12 @@ interface IBundleService is IService {
|
|
81
76
|
/// only open bundles (active or locked) may be closed
|
82
77
|
/// to close a bundle it may not have any non-closed polices attached to it
|
83
78
|
/// may only be called by registered and unlocked pool components
|
79
|
+
/// @return balanceAmount the unstaked amount that was remaining in the bundle
|
80
|
+
/// @return feeAmount the fee amount that was remaining for the bundle
|
84
81
|
function close(
|
85
82
|
IInstance instance,
|
86
83
|
NftId bundleNftId
|
87
|
-
) external;
|
84
|
+
) external returns (Amount balanceAmount, Amount feeAmount);
|
88
85
|
|
89
86
|
/// @dev set bundle fee to provided value
|
90
87
|
/// may only be called by registered and unlocked pool components
|
@@ -124,10 +121,20 @@ interface IBundleService is IService {
|
|
124
121
|
NftId policyNftId
|
125
122
|
) external;
|
126
123
|
|
124
|
+
// FIXME: move to pool service
|
127
125
|
/// @dev Withdraw bundle feeds for the given bundle
|
128
126
|
/// @param bundleNftId the bundle Nft Id
|
129
127
|
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
130
128
|
/// @return withdrawnAmount the effective withdrawn amount
|
131
129
|
function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
|
132
130
|
|
131
|
+
/// @dev returns true iff policy may be closed
|
132
|
+
/// a policy can be closed all conditions below are met
|
133
|
+
/// - policy exists
|
134
|
+
/// - has been activated
|
135
|
+
/// - is not yet closed
|
136
|
+
/// - has no open claims
|
137
|
+
/// - claim amount matches sum insured amount or is expired
|
138
|
+
function policyIsCloseable(IInstance instance, NftId policyNftId) external view returns (bool isCloseable);
|
139
|
+
|
133
140
|
}
|
@@ -2,6 +2,7 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
5
6
|
import {Fee} from "../type/Fee.sol";
|
6
7
|
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
7
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
@@ -20,21 +21,19 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
20
21
|
|
21
22
|
event LogPoolVerifiedByPool(address pool, NftId applicationNftId, Amount collateralizationAmount);
|
22
23
|
|
23
|
-
/// @dev
|
24
|
-
///
|
25
|
-
///
|
26
|
-
///
|
24
|
+
/// @dev This is a callback function that is called by the product service when underwriting a policy.
|
25
|
+
/// The pool has the option to check the details and object to underwriting by reverting.
|
26
|
+
/// The function is only called for "active" pools that ask to be involved/notified.
|
27
|
+
/// The default implementation is empty.
|
27
28
|
function verifyApplication(
|
28
29
|
NftId applicationNftId,
|
29
|
-
bytes memory applicationData,
|
30
30
|
NftId bundleNftId,
|
31
|
-
bytes memory bundleFilter,
|
32
31
|
Amount collateralizationAmount
|
33
32
|
) external;
|
34
33
|
|
35
|
-
/// @dev
|
36
|
-
///
|
37
|
-
/// default implementation returns true
|
34
|
+
/// @dev Returns true iff the application matches with the bundle.
|
35
|
+
/// This is a callback function that is only called if a pool declares itself as a verifying pool
|
36
|
+
/// The default implementation returns true.
|
38
37
|
function applicationMatchesBundle(
|
39
38
|
NftId applicationNftId,
|
40
39
|
bytes memory applicationData,
|
@@ -46,13 +45,18 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
46
45
|
view
|
47
46
|
returns (bool isMatching);
|
48
47
|
|
49
|
-
/// @dev Withdraw bundle feeds for the given bundle
|
50
|
-
/// @param bundleNftId the bundle Nft Id
|
51
|
-
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
52
|
-
/// @return withdrawnAmount the effective withdrawn amount
|
53
|
-
function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
|
54
48
|
|
55
|
-
/// @dev
|
49
|
+
/// @dev This is a callback function that is called by the claim service when a claim is confirmed.
|
50
|
+
/// The pool has the option to implement custom behavirous such as triggering a reinsurance claim or blocking the claim confirmaation.
|
51
|
+
/// The default implementation is empty.
|
52
|
+
function processConfirmedClaim(
|
53
|
+
NftId policyNftId,
|
54
|
+
ClaimId claimId,
|
55
|
+
Amount amount
|
56
|
+
) external;
|
57
|
+
|
58
|
+
|
59
|
+
/// @dev Returns initial pool specific infos for this pool
|
56
60
|
function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
|
57
61
|
|
58
62
|
}
|