@etherisc/gif-next 0.0.2-f36fd21-685 → 0.0.2-f47f21f-178
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 +19 -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 +174 -292
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +99 -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 +2077 -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 +459 -131
- 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 +330 -233
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +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 +109 -330
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +359 -194
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +145 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +178 -23
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +88 -130
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +384 -179
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +99 -313
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +506 -334
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +111 -87
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +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 +310 -118
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +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 +433 -327
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +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 +355 -283
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +122 -120
- 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 +321 -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 +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -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/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +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 +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +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 +83 -65
- 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 +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +418 -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 +42 -31
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +65 -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/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +10 -10
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/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 +21 -31
- package/contracts/pool/BasicPoolAuthorization.sol +5 -3
- package/contracts/pool/BundleService.sol +213 -61
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +31 -8
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +56 -39
- package/contracts/pool/Pool.sol +60 -53
- package/contracts/pool/PoolService.sol +250 -140
- 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 +34 -34
- 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 +394 -196
- 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 +125 -71
- 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 +40 -55
- package/contracts/shared/ComponentService.sol +235 -151
- 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 +25 -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 +100 -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 +11 -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/Blocknumber.sol +7 -1
- 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 +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +11 -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
| @@ -2,14 +2,15 @@ | |
| 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 | 
            -
            import {NftId} from "../type/NftId.sol";
         | 
| 7 | 
            -
            import {PayoutId} from "../type/PayoutId.sol";
         | 
| 8 7 | 
             
            import {IBundle} from "../instance/module/IBundle.sol";
         | 
| 9 8 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 10 9 | 
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 11 10 | 
             
            import {IPolicy} from "../instance/module/IPolicy.sol";
         | 
| 12 11 | 
             
            import {IService} from "../shared/IService.sol";
         | 
| 12 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 13 | 
            +
            import {PayoutId} from "../type/PayoutId.sol";
         | 
| 13 14 | 
             
            import {RoleId} from "../type/RoleId.sol";
         | 
| 14 15 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 15 16 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| @@ -17,29 +18,25 @@ import {UFixed} from "../type/UFixed.sol"; | |
| 17 18 |  | 
| 18 19 | 
             
            interface IPoolService is IService {
         | 
| 19 20 |  | 
| 20 | 
            -
                event  | 
| 21 | 
            +
                event LogPoolServiceMaxBalanceAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
         | 
| 21 22 | 
             
                event LogPoolServiceBundleOwnerRoleSet(NftId poolNftId, RoleId bundleOwnerRole);
         | 
| 22 23 |  | 
| 23 24 | 
             
                event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
         | 
| 24 25 | 
             
                event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
         | 
| 25 26 |  | 
| 26 | 
            -
                 | 
| 27 | 
            -
                 | 
| 28 | 
            -
             | 
| 29 | 
            -
                /// @dev defines the required role for bundle owners for the calling pool
         | 
| 30 | 
            -
                /// default implementation returns PUBLIC ROLE
         | 
| 31 | 
            -
                function setBundleOwnerRole(RoleId bundleOwnerRole) external;
         | 
| 27 | 
            +
                event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
         | 
| 28 | 
            +
                event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount);
         | 
| 32 29 |  | 
| 33 | 
            -
                 | 
| 34 | 
            -
                function setMaxCapitalAmount(Amount maxCapitalAmount) external;
         | 
| 30 | 
            +
                event LogPoolServiceProcessFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount);
         | 
| 35 31 |  | 
| 36 | 
            -
                 | 
| 37 | 
            -
                 | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
                ) external;
         | 
| 32 | 
            +
                error ErrorPoolServicePolicyPoolMismatch(NftId policyNftId, NftId productNftId, NftId expectedProductNftId);
         | 
| 33 | 
            +
                error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
         | 
| 34 | 
            +
                error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
         | 
| 35 | 
            +
                error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
         | 
| 36 | 
            +
                error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
         | 
| 42 37 |  | 
| 38 | 
            +
                /// @dev sets the max balance amount for the calling pool
         | 
| 39 | 
            +
                function setMaxBalanceAmount(Amount maxBalanceAmount) external;
         | 
| 43 40 |  | 
| 44 41 | 
             
                /// @dev locks required collateral to cover the specified application (and turn it into a policy)
         | 
| 45 42 | 
             
                /// - retention level == 1: the full collateral amount will be locked by the specified bundle
         | 
| @@ -71,10 +68,10 @@ interface IPoolService is IService { | |
| 71 68 | 
             
                ) external;
         | 
| 72 69 |  | 
| 73 70 |  | 
| 74 | 
            -
                /// @dev reduces the locked collateral in the bundle associated with the specified policy
         | 
| 71 | 
            +
                /// @dev reduces the locked collateral in the bundle associated with the specified policy and updates pool/bundle counters
         | 
| 75 72 | 
             
                /// every payout of a policy reduces the collateral by the payout amount
         | 
| 76 73 | 
             
                /// may only be called by the claim service for unlocked pool components
         | 
| 77 | 
            -
                function  | 
| 74 | 
            +
                function processPayout(
         | 
| 78 75 | 
             
                    IInstance instance, 
         | 
| 79 76 | 
             
                    address token,
         | 
| 80 77 | 
             
                    NftId policyNftId, 
         | 
| @@ -83,13 +80,11 @@ interface IPoolService is IService { | |
| 83 80 | 
             
                ) external;
         | 
| 84 81 |  | 
| 85 82 |  | 
| 86 | 
            -
                /// @dev create a new bundle  | 
| 87 | 
            -
                ///  | 
| 88 | 
            -
                /// may only be called by registered and unlocked pool components
         | 
| 83 | 
            +
                /// @dev create a new empty bundle with the provided parameters
         | 
| 84 | 
            +
                /// may only be called by registered and unlocked pool components.
         | 
| 89 85 | 
             
                function createBundle(
         | 
| 90 86 | 
             
                    address owner, // initial bundle owner
         | 
| 91 87 | 
             
                    Fee memory fee, // fees deducted from premium that go to bundle owner
         | 
| 92 | 
            -
                    Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
         | 
| 93 88 | 
             
                    Seconds lifetime, // initial duration for which new policies are covered
         | 
| 94 89 | 
             
                    bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
         | 
| 95 90 | 
             
                )
         | 
| @@ -97,6 +92,18 @@ interface IPoolService is IService { | |
| 97 92 | 
             
                    returns(NftId bundleNftId); // the nft id of the newly created bundle
         | 
| 98 93 |  | 
| 99 94 |  | 
| 95 | 
            +
                /// @dev increase stakes for bundle
         | 
| 96 | 
            +
                /// staking fees will be deducted by the pool service from the staking amount
         | 
| 97 | 
            +
                /// may only be called by registered and unlocked pool components
         | 
| 98 | 
            +
                function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
         | 
| 99 | 
            +
             | 
| 100 | 
            +
             | 
| 101 | 
            +
                /// @dev decrease stakes for bundle
         | 
| 102 | 
            +
                /// performance fees will be deducted by the pool service from the staking amount
         | 
| 103 | 
            +
                /// may only be called by registered and unlocked pool components
         | 
| 104 | 
            +
                function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
         | 
| 105 | 
            +
             | 
| 106 | 
            +
             | 
| 100 107 | 
             
                /// @dev closes the specified bundle
         | 
| 101 108 | 
             
                /// only open bundles (active or locked) may be closed
         | 
| 102 109 | 
             
                /// to close a bundle it may not have any non-closed polices attached to it
         | 
| @@ -105,22 +112,30 @@ interface IPoolService is IService { | |
| 105 112 | 
             
                function closeBundle(NftId bundleNftId) external;
         | 
| 106 113 |  | 
| 107 114 |  | 
| 108 | 
            -
                /// @dev  | 
| 109 | 
            -
                function  | 
| 115 | 
            +
                /// @dev Informs product about available funds to process a confirmed claim.
         | 
| 116 | 
            +
                /// The function triggers a callback to the product component when the product's property isProcessingFundedClaims is set.
         | 
| 117 | 
            +
                function processFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount) external;
         | 
| 110 118 |  | 
| 111 | 
            -
                /// @dev increase stakes for bundle
         | 
| 112 | 
            -
                /// staking fees will be deducted by the pool service from the staking amount
         | 
| 113 | 
            -
                /// may only be called by registered and unlocked pool components
         | 
| 114 | 
            -
                // function stake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
         | 
| 115 119 |  | 
| 120 | 
            +
                /// @dev Fund the specified pool wallet with the provided amount.
         | 
| 121 | 
            +
                /// This function will collect the amount from the sender address and transfers it to the pool wallet.
         | 
| 122 | 
            +
                /// The function will not update balance amounts managed by the framework.
         | 
| 123 | 
            +
                /// Only available for externally managed pools.
         | 
| 124 | 
            +
                function fundPoolWallet(NftId poolNftId, Amount amount) external;
         | 
| 116 125 |  | 
| 117 | 
            -
             | 
| 118 | 
            -
                ///  | 
| 119 | 
            -
                ///  | 
| 120 | 
            -
                 | 
| 126 | 
            +
             | 
| 127 | 
            +
                /// @dev Defund the specified pool wallet with the provided amount.
         | 
| 128 | 
            +
                /// This function will transfer the amount from the pool wallet to the sender address.
         | 
| 129 | 
            +
                /// The function will not update balance amounts managed by the framework.
         | 
| 130 | 
            +
                /// Only available for externally managed pools.
         | 
| 131 | 
            +
                function defundPoolWallet(NftId poolNftId, Amount amount) external;
         | 
| 132 | 
            +
             | 
| 133 | 
            +
             | 
| 134 | 
            +
                /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
         | 
| 135 | 
            +
                function processSale(NftId bundleNftId, IPolicy.PremiumInfo memory premium) external;
         | 
| 121 136 |  | 
| 122 137 |  | 
| 123 | 
            -
                /// @dev  | 
| 138 | 
            +
                /// @dev Calulate required collateral for the provided parameters.
         | 
| 124 139 | 
             
                function calculateRequiredCollateral(
         | 
| 125 140 | 
             
                    InstanceReader instanceReader,
         | 
| 126 141 | 
             
                    NftId productNftId, 
         | 
| @@ -129,12 +144,14 @@ interface IPoolService is IService { | |
| 129 144 | 
             
                    external
         | 
| 130 145 | 
             
                    view 
         | 
| 131 146 | 
             
                    returns(
         | 
| 132 | 
            -
                        Amount  | 
| 133 | 
            -
                        Amount  | 
| 147 | 
            +
                        Amount totalCollateralAmount,
         | 
| 148 | 
            +
                        Amount localCollateralAmount
         | 
| 134 149 | 
             
                    );
         | 
| 135 150 |  | 
| 136 151 |  | 
| 137 | 
            -
                /// @dev calulate required collateral for the provided parameters
         | 
| 152 | 
            +
                /// @dev calulate required collateral for the provided parameters.
         | 
| 153 | 
            +
                /// Collateralization is applied to sum insured.
         | 
| 154 | 
            +
                /// Retention level defines the fraction of the collateral that is required locally.
         | 
| 138 155 | 
             
                function calculateRequiredCollateral(
         | 
| 139 156 | 
             
                    UFixed collateralizationLevel, 
         | 
| 140 157 | 
             
                    UFixed retentionLevel, 
         | 
| @@ -143,8 +160,8 @@ interface IPoolService is IService { | |
| 143 160 | 
             
                    external
         | 
| 144 161 | 
             
                    pure 
         | 
| 145 162 | 
             
                    returns(
         | 
| 146 | 
            -
                        Amount  | 
| 147 | 
            -
                        Amount  | 
| 163 | 
            +
                        Amount totalCollateralAmount,
         | 
| 164 | 
            +
                        Amount localCollateralAmount
         | 
| 148 165 | 
             
                    );
         | 
| 149 166 |  | 
| 150 167 | 
             
            }
         | 
    
        package/contracts/pool/Pool.sol
    CHANGED
    
    | @@ -2,7 +2,8 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 5 | 
            -
            import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
         | 
| 5 | 
            +
            import {BUNDLE, COMPONENT, POLICY, POOL} from "../type/ObjectType.sol";
         | 
| 6 | 
            +
            import {ClaimId} from "../type/ClaimId.sol";
         | 
| 6 7 | 
             
            import {IBundleService} from "./IBundleService.sol";
         | 
| 7 8 | 
             
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 8 9 | 
             
            import {IPoolComponent} from "./IPoolComponent.sol";
         | 
| @@ -10,12 +11,12 @@ import {IPoolService} from "./IPoolService.sol"; | |
| 10 11 | 
             
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 11 12 | 
             
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 12 13 | 
             
            import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
         | 
| 13 | 
            -
            import {Fee | 
| 14 | 
            -
            import {NftId | 
| 14 | 
            +
            import {Fee} from "../type/Fee.sol";
         | 
| 15 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 15 16 | 
             
            import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
         | 
| 16 17 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 17 | 
            -
            import { | 
| 18 | 
            -
            import { | 
| 18 | 
            +
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 19 | 
            +
            import {UFixedLib} from "../type/UFixed.sol";
         | 
| 19 20 |  | 
| 20 21 | 
             
            abstract contract Pool is
         | 
| 21 22 | 
             
                InstanceLinkedComponent, 
         | 
| @@ -50,6 +51,7 @@ abstract contract Pool is | |
| 50 51 | 
             
                    public
         | 
| 51 52 | 
             
                    virtual
         | 
| 52 53 | 
             
                    restricted()
         | 
| 54 | 
            +
                    onlyNftOfType(applicationNftId, POLICY())
         | 
| 53 55 | 
             
                {
         | 
| 54 56 | 
             
                    if(!applicationMatchesBundle(
         | 
| 55 57 | 
             
                        applicationNftId,
         | 
| @@ -66,6 +68,21 @@ abstract contract Pool is | |
| 66 68 | 
             
                }
         | 
| 67 69 |  | 
| 68 70 |  | 
| 71 | 
            +
                /// @dev see {IPoolComponent.processConfirmedClaim}
         | 
| 72 | 
            +
                function processConfirmedClaim(
         | 
| 73 | 
            +
                    NftId policyNftId, 
         | 
| 74 | 
            +
                    ClaimId claimId, 
         | 
| 75 | 
            +
                    Amount amount
         | 
| 76 | 
            +
                )
         | 
| 77 | 
            +
                    public
         | 
| 78 | 
            +
                    virtual
         | 
| 79 | 
            +
                    restricted()
         | 
| 80 | 
            +
                    onlyNftOfType(policyNftId, POLICY())
         | 
| 81 | 
            +
                {
         | 
| 82 | 
            +
                    // default implementation is empty
         | 
| 83 | 
            +
                }
         | 
| 84 | 
            +
             | 
| 85 | 
            +
             | 
| 69 86 | 
             
                /// @dev see {IPoolComponent.applicationMatchesBundle}
         | 
| 70 87 | 
             
                /// Override this function to implement any custom application verification 
         | 
| 71 88 | 
             
                /// Default implementation always returns true
         | 
| @@ -79,27 +96,20 @@ abstract contract Pool is | |
| 79 96 | 
             
                    public
         | 
| 80 97 | 
             
                    virtual
         | 
| 81 98 | 
             
                    view
         | 
| 99 | 
            +
                    onlyNftOfType(applicationNftId, POLICY())
         | 
| 100 | 
            +
                    onlyNftOfType(bundleNftId, BUNDLE())
         | 
| 82 101 | 
             
                    returns (bool isMatching)
         | 
| 83 102 | 
             
                {
         | 
| 84 103 | 
             
                    return true;
         | 
| 85 104 | 
             
                }
         | 
| 86 105 |  | 
| 87 | 
            -
             | 
| 88 | 
            -
                function register()
         | 
| 89 | 
            -
                    external
         | 
| 90 | 
            -
                    virtual
         | 
| 91 | 
            -
                    onlyOwner()
         | 
| 92 | 
            -
                {
         | 
| 93 | 
            -
                    _getPoolStorage()._componentService.registerPool();
         | 
| 94 | 
            -
                    _approveTokenHandler(type(uint256).max);
         | 
| 95 | 
            -
                }
         | 
| 96 | 
            -
             | 
| 97 106 | 
             
                /// @inheritdoc IPoolComponent
         | 
| 98 107 | 
             
                function withdrawBundleFees(NftId bundleNftId, Amount amount) 
         | 
| 99 108 | 
             
                    external 
         | 
| 100 109 | 
             
                    virtual
         | 
| 101 110 | 
             
                    restricted()
         | 
| 102 111 | 
             
                    onlyBundleOwner(bundleNftId)
         | 
| 112 | 
            +
                    onlyNftOfType(bundleNftId, BUNDLE())
         | 
| 103 113 | 
             
                    returns (Amount withdrawnAmount) 
         | 
| 104 114 | 
             
                {
         | 
| 105 115 | 
             
                    return _withdrawBundleFees(bundleNftId, amount);
         | 
| @@ -112,32 +122,28 @@ abstract contract Pool is | |
| 112 122 | 
             
                    view 
         | 
| 113 123 | 
             
                    returns (IComponents.PoolInfo memory poolInfo)
         | 
| 114 124 | 
             
                {
         | 
| 115 | 
            -
                    return IComponents.PoolInfo(
         | 
| 116 | 
            -
                         | 
| 117 | 
            -
                        PUBLIC_ROLE(),  | 
| 118 | 
            -
                         | 
| 119 | 
            -
                         | 
| 120 | 
            -
                        false, | 
| 121 | 
            -
                        false, | 
| 122 | 
            -
                        UFixedLib.toUFixed(1), | 
| 123 | 
            -
                        UFixedLib.toUFixed(1) | 
| 124 | 
            -
             | 
| 125 | 
            -
                        FeeLib.zero(), // initialStakingFee,
         | 
| 126 | 
            -
                        FeeLib.zero() // initialPerformanceFee,
         | 
| 127 | 
            -
                    );
         | 
| 125 | 
            +
                    return IComponents.PoolInfo({
         | 
| 126 | 
            +
                        maxBalanceAmount: AmountLib.max(),
         | 
| 127 | 
            +
                        bundleOwnerRole: PUBLIC_ROLE(), 
         | 
| 128 | 
            +
                        isInterceptingBundleTransfers: isNftInterceptor(),
         | 
| 129 | 
            +
                        isProcessingConfirmedClaims: false,
         | 
| 130 | 
            +
                        isExternallyManaged: false,
         | 
| 131 | 
            +
                        isVerifyingApplications: false,
         | 
| 132 | 
            +
                        collateralizationLevel: UFixedLib.toUFixed(1),
         | 
| 133 | 
            +
                        retentionLevel: UFixedLib.toUFixed(1)
         | 
| 134 | 
            +
                    });
         | 
| 128 135 | 
             
                }
         | 
| 129 136 |  | 
| 130 137 | 
             
                // Internals
         | 
| 131 138 |  | 
| 132 139 | 
             
                function _initializePool(
         | 
| 133 140 | 
             
                    address registry,
         | 
| 134 | 
            -
                    NftId  | 
| 141 | 
            +
                    NftId productNftId,
         | 
| 135 142 | 
             
                    string memory name,
         | 
| 136 143 | 
             
                    address token,
         | 
| 137 144 | 
             
                    IAuthorization authorization,
         | 
| 138 145 | 
             
                    bool isInterceptingNftTransfers,
         | 
| 139 146 | 
             
                    address initialOwner,
         | 
| 140 | 
            -
                    bytes memory registryData, // writeonly data that will saved in the object info record of the registry
         | 
| 141 147 | 
             
                    bytes memory componentData // component specifidc data 
         | 
| 142 148 | 
             
                )
         | 
| 143 149 | 
             
                    internal
         | 
| @@ -146,14 +152,13 @@ abstract contract Pool is | |
| 146 152 | 
             
                {
         | 
| 147 153 | 
             
                    _initializeInstanceLinkedComponent(
         | 
| 148 154 | 
             
                        registry, 
         | 
| 149 | 
            -
                         | 
| 155 | 
            +
                        productNftId,  
         | 
| 150 156 | 
             
                        name, 
         | 
| 151 157 | 
             
                        token, 
         | 
| 152 158 | 
             
                        POOL(), 
         | 
| 153 159 | 
             
                        authorization, 
         | 
| 154 160 | 
             
                        isInterceptingNftTransfers, 
         | 
| 155 161 | 
             
                        initialOwner, 
         | 
| 156 | 
            -
                        registryData, 
         | 
| 157 162 | 
             
                        componentData);
         | 
| 158 163 |  | 
| 159 164 | 
             
                    PoolStorage storage $ = _getPoolStorage();
         | 
| @@ -161,7 +166,7 @@ abstract contract Pool is | |
| 161 166 | 
             
                    $._bundleService = IBundleService(_getServiceAddress(BUNDLE()));
         | 
| 162 167 | 
             
                    $._componentService = IComponentService(_getServiceAddress(COMPONENT())); 
         | 
| 163 168 |  | 
| 164 | 
            -
                     | 
| 169 | 
            +
                    _registerInterface(type(IPoolComponent).interfaceId);
         | 
| 165 170 | 
             
                }
         | 
| 166 171 |  | 
| 167 172 | 
             
                /// @dev increases the staked tokens by the specified amount
         | 
| @@ -172,8 +177,9 @@ abstract contract Pool is | |
| 172 177 | 
             
                )
         | 
| 173 178 | 
             
                    internal
         | 
| 174 179 | 
             
                    virtual
         | 
| 180 | 
            +
                    returns(Amount) 
         | 
| 175 181 | 
             
                {
         | 
| 176 | 
            -
                     | 
| 182 | 
            +
                    return _getPoolStorage()._poolService.stake(bundleNftId, amount);
         | 
| 177 183 | 
             
                }
         | 
| 178 184 |  | 
| 179 185 |  | 
| @@ -185,8 +191,9 @@ abstract contract Pool is | |
| 185 191 | 
             
                )
         | 
| 186 192 | 
             
                    internal
         | 
| 187 193 | 
             
                    virtual
         | 
| 194 | 
            +
                    returns(Amount netAmount) 
         | 
| 188 195 | 
             
                {
         | 
| 189 | 
            -
                     | 
| 196 | 
            +
                    return _getPoolStorage()._poolService.unstake(bundleNftId, amount);
         | 
| 190 197 | 
             
                }
         | 
| 191 198 |  | 
| 192 199 |  | 
| @@ -198,8 +205,9 @@ abstract contract Pool is | |
| 198 205 | 
             
                )
         | 
| 199 206 | 
             
                    internal
         | 
| 200 207 | 
             
                    virtual
         | 
| 208 | 
            +
                    returns (Timestamp extendedExpiredAt) 
         | 
| 201 209 | 
             
                {
         | 
| 202 | 
            -
                     | 
| 210 | 
            +
                    return _getPoolStorage()._bundleService.extend(bundleNftId, lifetimeExtension);
         | 
| 203 211 | 
             
                }
         | 
| 204 212 |  | 
| 205 213 |  | 
| @@ -229,7 +237,7 @@ abstract contract Pool is | |
| 229 237 | 
             
                /// To close a bundle all all linked policies MUST be in closed state as well.
         | 
| 230 238 | 
             
                /// Closing a bundle finalizes the bundle bookkeeping including overall profit calculation.
         | 
| 231 239 | 
             
                /// Once a bundle is closed this action cannot be reversed.
         | 
| 232 | 
            -
                function  | 
| 240 | 
            +
                function _closeBundle(NftId bundleNftId)
         | 
| 233 241 | 
             
                    internal
         | 
| 234 242 | 
             
                    virtual
         | 
| 235 243 | 
             
                {
         | 
| @@ -251,23 +259,13 @@ abstract contract Pool is | |
| 251 259 | 
             
                }
         | 
| 252 260 |  | 
| 253 261 |  | 
| 254 | 
            -
                /// @dev Sets the maximum  | 
| 262 | 
            +
                /// @dev Sets the maximum balance amound held by this pool.
         | 
| 255 263 | 
             
                /// Function may only be called by pool owner.
         | 
| 256 | 
            -
                function  | 
| 257 | 
            -
                    internal
         | 
| 258 | 
            -
                    virtual
         | 
| 259 | 
            -
                {
         | 
| 260 | 
            -
                    _getPoolStorage()._poolService.setMaxCapitalAmount(maxCapitalAmount);
         | 
| 261 | 
            -
                }
         | 
| 262 | 
            -
             | 
| 263 | 
            -
                /// @dev Sets the required role to create/own bundles.
         | 
| 264 | 
            -
                /// May only be called once after setting up a pool.
         | 
| 265 | 
            -
                /// May only be called by pool owner.
         | 
| 266 | 
            -
                function _setBundleOwnerRole(RoleId bundleOwnerRole)
         | 
| 264 | 
            +
                function _setMaxBalanceAmount(Amount maxBalanceAmount)
         | 
| 267 265 | 
             
                    internal
         | 
| 268 266 | 
             
                    virtual
         | 
| 269 267 | 
             
                {
         | 
| 270 | 
            -
                    _getPoolStorage()._poolService. | 
| 268 | 
            +
                    _getPoolStorage()._poolService.setMaxBalanceAmount(maxBalanceAmount);
         | 
| 271 269 | 
             
                }
         | 
| 272 270 |  | 
| 273 271 |  | 
| @@ -287,11 +285,10 @@ abstract contract Pool is | |
| 287 285 | 
             
                    _getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
         | 
| 288 286 | 
             
                }
         | 
| 289 287 |  | 
| 290 | 
            -
                /// @dev Creates a new bundle using the provided parameter values.
         | 
| 288 | 
            +
                /// @dev Creates a new empty bundle using the provided parameter values.
         | 
| 291 289 | 
             
                function _createBundle(
         | 
| 292 290 | 
             
                    address bundleOwner,
         | 
| 293 291 | 
             
                    Fee memory fee,
         | 
| 294 | 
            -
                    Amount amount,
         | 
| 295 292 | 
             
                    Seconds lifetime, 
         | 
| 296 293 | 
             
                    bytes memory filter
         | 
| 297 294 | 
             
                )
         | 
| @@ -301,7 +298,6 @@ abstract contract Pool is | |
| 301 298 | 
             
                    bundleNftId = _getPoolStorage()._poolService.createBundle(
         | 
| 302 299 | 
             
                        bundleOwner,
         | 
| 303 300 | 
             
                        fee,
         | 
| 304 | 
            -
                        amount,
         | 
| 305 301 | 
             
                        lifetime,
         | 
| 306 302 | 
             
                        filter);
         | 
| 307 303 |  | 
| @@ -320,6 +316,17 @@ abstract contract Pool is | |
| 320 316 | 
             
                    return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
         | 
| 321 317 | 
             
                }
         | 
| 322 318 |  | 
| 319 | 
            +
                function _processFundedClaim(
         | 
| 320 | 
            +
                    NftId policyNftId, 
         | 
| 321 | 
            +
                    ClaimId claimId, 
         | 
| 322 | 
            +
                    Amount availableAmount
         | 
| 323 | 
            +
                )
         | 
| 324 | 
            +
                    internal
         | 
| 325 | 
            +
                {
         | 
| 326 | 
            +
                    _getPoolStorage()._poolService.processFundedClaim(
         | 
| 327 | 
            +
                        policyNftId, claimId, availableAmount);
         | 
| 328 | 
            +
                }
         | 
| 329 | 
            +
             | 
| 323 330 | 
             
                function _getPoolStorage() private pure returns (PoolStorage storage $) {
         | 
| 324 331 | 
             
                    assembly {
         | 
| 325 332 | 
             
                        $.slot := POOL_STORAGE_LOCATION_V1
         |