@etherisc/gif-next 0.0.2-4b70713-571 → 0.0.2-4c19d89-776
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 +46 -8
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +203 -77
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
- 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 +142 -44
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
- 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/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 +165 -391
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +103 -321
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +321 -369
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +129 -119
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +115 -143
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +196 -133
- 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 +1475 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2032 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -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 +1479 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2432 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +158 -57
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +194 -154
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +446 -143
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1004 -305
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +131 -266
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +102 -92
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +651 -514
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- 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 +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- 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 +114 -340
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
- 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 +102 -130
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +90 -308
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +112 -386
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +170 -443
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +106 -148
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +96 -143
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +124 -219
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +313 -350
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +109 -394
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +461 -593
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +142 -108
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +243 -400
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +415 -234
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +140 -114
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +235 -202
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +67 -8
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +459 -309
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +227 -314
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +241 -398
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +659 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +732 -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 +334 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- 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 +540 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +349 -167
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- 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 +420 -246
- 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 +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +501 -626
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -128
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +89 -88
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +446 -276
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +102 -130
- 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 +148 -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 +55 -2
- 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 +89 -307
- 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 +122 -97
- 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 +57 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -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 +134 -125
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +77 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +76 -106
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -366
- 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 +122 -95
- 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 +122 -164
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +99 -85
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +149 -108
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +55 -24
- 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 +33 -9
- 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 +3 -3
- 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/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- 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 +125 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- 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/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- 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/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +16 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
- 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/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +232 -134
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +321 -202
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +17 -10
- package/contracts/authorization/IAuthorization.sol +27 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +15 -12
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +42 -48
- package/contracts/distribution/DistributionService.sol +125 -104
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +28 -24
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +90 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +437 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +21 -37
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +59 -66
- package/contracts/instance/InstanceAdmin.sol +256 -85
- package/contracts/instance/InstanceAuthorizationV3.sol +56 -47
- package/contracts/instance/InstanceReader.sol +275 -43
- package/contracts/instance/InstanceService.sol +125 -164
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +23 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +11 -4
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +14 -15
- package/contracts/instance/module/IDistribution.sol +2 -1
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +7 -17
- package/contracts/oracle/OracleService.sol +113 -81
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +35 -26
- package/contracts/pool/BasicPoolAuthorization.sol +29 -11
- package/contracts/pool/BundleService.sol +119 -162
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +20 -38
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +90 -83
- package/contracts/pool/Pool.sol +140 -127
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +506 -311
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +72 -43
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +13 -44
- package/contracts/product/BasicProductAuthorization.sol +24 -11
- package/contracts/product/ClaimService.sol +368 -153
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +6 -2
- package/contracts/product/IClaimService.sol +44 -8
- package/contracts/product/IPolicyService.sol +53 -36
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +27 -5
- package/contracts/product/{IProductService.sol → IRiskService.sol} +6 -9
- package/contracts/product/PolicyService.sol +476 -270
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +66 -62
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +169 -92
- package/contracts/product/RiskService.sol +144 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +60 -28
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +357 -203
- package/contracts/registry/RegistryAdmin.sol +171 -182
- package/contracts/registry/RegistryService.sol +37 -48
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +258 -232
- package/contracts/registry/ServiceAuthorizationV3.sol +99 -52
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +74 -127
- package/contracts/shared/ComponentService.sol +426 -385
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +28 -17
- package/contracts/shared/ContractLib.sol +253 -0
- package/contracts/shared/IComponent.sol +8 -17
- package/contracts/shared/IComponentService.sol +41 -37
- package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +73 -48
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +29 -9
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +55 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +15 -32
- package/contracts/shared/TokenHandler.sol +309 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +7 -9
- package/contracts/staking/IStakingService.sol +8 -3
- package/contracts/staking/StakeManagerLib.sol +19 -26
- package/contracts/staking/Staking.sol +71 -61
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +13 -6
- package/contracts/staking/StakingService.sol +54 -35
- package/contracts/staking/StakingServiceManager.sol +6 -5
- 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/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +7 -0
- package/contracts/type/ObjectType.sol +52 -20
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +10 -5
- package/contracts/type/UFixed.sol +13 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +5 -4
- 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/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- 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/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/ProductService.sol +0 -99
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity ^0.8.20;
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
|
6
5
|
import {IBundle} from "../instance/module/IBundle.sol";
|
|
7
6
|
import {IBundleService} from "./IBundleService.sol";
|
|
8
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
|
@@ -11,15 +10,14 @@ import {IRegistry} from "../registry/IRegistry.sol";
|
|
|
11
10
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
|
12
11
|
import {IInstance} from "../instance/IInstance.sol";
|
|
13
12
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
|
14
|
-
import {IPolicy} from "../instance/module/IPolicy.sol";
|
|
15
13
|
|
|
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, ACCOUNTING, 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";
|
|
@@ -35,6 +33,7 @@ contract BundleService is
|
|
|
35
33
|
|
|
36
34
|
address private _registryAddress;
|
|
37
35
|
IRegistryService private _registryService;
|
|
36
|
+
IAccountingService private _accountingService;
|
|
38
37
|
IComponentService private _componentService;
|
|
39
38
|
|
|
40
39
|
function _initialize(
|
|
@@ -42,20 +41,21 @@ contract BundleService is
|
|
|
42
41
|
bytes memory data
|
|
43
42
|
)
|
|
44
43
|
internal
|
|
45
|
-
initializer
|
|
46
44
|
virtual override
|
|
45
|
+
initializer()
|
|
47
46
|
{
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
(
|
|
48
|
+
address authority,
|
|
49
|
+
address registry
|
|
50
|
+
) = abi.decode(data, (address, address));
|
|
51
|
+
|
|
52
|
+
__Service_init(authority, registry, owner);
|
|
54
53
|
|
|
55
54
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
|
55
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
|
56
56
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
_registerInterface(type(IBundleService).interfaceId);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
|
|
@@ -65,7 +65,10 @@ contract BundleService is
|
|
|
65
65
|
)
|
|
66
66
|
external
|
|
67
67
|
virtual
|
|
68
|
+
restricted()
|
|
68
69
|
{
|
|
70
|
+
_checkNftType(bundleNftId, BUNDLE());
|
|
71
|
+
|
|
69
72
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
|
70
73
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
71
74
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
@@ -83,19 +86,18 @@ contract BundleService is
|
|
|
83
86
|
|
|
84
87
|
|
|
85
88
|
function create(
|
|
86
|
-
IInstance instance,
|
|
87
|
-
NftId poolNftId,
|
|
88
89
|
address owner,
|
|
89
90
|
Fee memory bundleFee,
|
|
90
|
-
Amount stakingAmount,
|
|
91
91
|
Seconds lifetime,
|
|
92
92
|
bytes calldata filter
|
|
93
93
|
)
|
|
94
94
|
external
|
|
95
|
-
|
|
96
|
-
restricted
|
|
95
|
+
virtual
|
|
96
|
+
restricted()
|
|
97
97
|
returns(NftId bundleNftId)
|
|
98
98
|
{
|
|
99
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
|
100
|
+
|
|
99
101
|
// register bundle with registry
|
|
100
102
|
bundleNftId = _registryService.registerBundle(
|
|
101
103
|
IRegistry.ObjectInfo(
|
|
@@ -113,26 +115,21 @@ contract BundleService is
|
|
|
113
115
|
InstanceStore instanceStore = instance.getInstanceStore();
|
|
114
116
|
instanceStore.createBundle(
|
|
115
117
|
bundleNftId,
|
|
116
|
-
IBundle.BundleInfo(
|
|
117
|
-
poolNftId,
|
|
118
|
-
bundleFee,
|
|
119
|
-
filter,
|
|
120
|
-
TimestampLib.blockTimestamp(),
|
|
121
|
-
TimestampLib.blockTimestamp().addSeconds(lifetime),
|
|
122
|
-
zeroTimestamp()
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
_componentService.increaseBundleBalance(
|
|
126
|
-
instanceStore,
|
|
127
|
-
bundleNftId,
|
|
128
|
-
stakingAmount,
|
|
129
|
-
AmountLib.zero()); // fee amount
|
|
118
|
+
IBundle.BundleInfo({
|
|
119
|
+
poolNftId: poolNftId,
|
|
120
|
+
fee: bundleFee,
|
|
121
|
+
filter: filter,
|
|
122
|
+
activatedAt: TimestampLib.blockTimestamp(),
|
|
123
|
+
expiredAt: TimestampLib.blockTimestamp().addSeconds(lifetime),
|
|
124
|
+
closedAt: zeroTimestamp()
|
|
125
|
+
})
|
|
126
|
+
);
|
|
130
127
|
|
|
131
128
|
// put bundle under bundle managemet
|
|
132
129
|
BundleSet bundleManager = instance.getBundleSet();
|
|
133
130
|
bundleManager.add(bundleNftId);
|
|
134
131
|
|
|
135
|
-
|
|
132
|
+
emit LogBundleServiceBundleCreated(bundleNftId, poolNftId);
|
|
136
133
|
}
|
|
137
134
|
|
|
138
135
|
|
|
@@ -147,45 +144,58 @@ contract BundleService is
|
|
|
147
144
|
virtual
|
|
148
145
|
restricted()
|
|
149
146
|
{
|
|
147
|
+
// checks
|
|
148
|
+
_checkNftType(policyNftId, POLICY());
|
|
149
|
+
_checkNftType(bundleNftId, BUNDLE());
|
|
150
|
+
|
|
150
151
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
151
|
-
StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
|
|
152
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
153
152
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
153
|
+
{
|
|
154
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
|
155
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
156
|
+
|
|
157
|
+
// ensure bundle is active and not yet expired
|
|
158
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
|
159
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
|
160
|
+
}
|
|
157
161
|
}
|
|
158
162
|
|
|
159
|
-
// ensure bundle capacity is sufficent to collateralize policy
|
|
160
163
|
InstanceStore instanceStore = instance.getInstanceStore();
|
|
161
|
-
(
|
|
162
|
-
Amount balanceAmount,
|
|
163
|
-
Amount lockedAmount,
|
|
164
|
-
Amount feeAmount
|
|
165
|
-
) = instanceStore.getAmounts(bundleNftId);
|
|
166
164
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
165
|
+
{
|
|
166
|
+
// ensure bundle capacity is sufficent to collateralize policy
|
|
167
|
+
(
|
|
168
|
+
Amount balanceAmount,
|
|
169
|
+
Amount lockedAmount,
|
|
170
|
+
Amount feeAmount
|
|
171
|
+
) = instanceStore.getAmounts(bundleNftId);
|
|
172
|
+
|
|
173
|
+
Amount capacity = balanceAmount - (lockedAmount + feeAmount);
|
|
174
|
+
if(capacity < collateralAmount) {
|
|
175
|
+
revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
|
|
176
|
+
}
|
|
170
177
|
}
|
|
171
178
|
|
|
179
|
+
// effects
|
|
172
180
|
// updated locked amount
|
|
173
181
|
instanceStore.increaseLocked(bundleNftId, collateralAmount);
|
|
174
|
-
|
|
175
|
-
// link policy to bundle in bundle manger
|
|
176
|
-
_linkPolicy(instance, policyNftId);
|
|
177
182
|
}
|
|
178
183
|
|
|
179
184
|
|
|
180
185
|
function lock(NftId bundleNftId)
|
|
181
186
|
external
|
|
182
187
|
virtual
|
|
188
|
+
restricted()
|
|
183
189
|
{
|
|
190
|
+
// checks
|
|
191
|
+
_checkNftType(bundleNftId, BUNDLE());
|
|
192
|
+
|
|
184
193
|
(,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
|
185
194
|
|
|
186
195
|
// udpate bundle state
|
|
187
196
|
instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
|
|
188
197
|
|
|
198
|
+
// effects
|
|
189
199
|
// update set of active bundles
|
|
190
200
|
BundleSet bundleManager = instance.getBundleSet();
|
|
191
201
|
bundleManager.lock(bundleNftId);
|
|
@@ -197,9 +207,14 @@ contract BundleService is
|
|
|
197
207
|
function unlock(NftId bundleNftId)
|
|
198
208
|
external
|
|
199
209
|
virtual
|
|
210
|
+
restricted()
|
|
200
211
|
{
|
|
212
|
+
// checks
|
|
213
|
+
_checkNftType(bundleNftId, BUNDLE());
|
|
214
|
+
|
|
201
215
|
(,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
|
202
216
|
|
|
217
|
+
// effects
|
|
203
218
|
// udpate bundle state
|
|
204
219
|
instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
|
|
205
220
|
|
|
@@ -217,10 +232,13 @@ contract BundleService is
|
|
|
217
232
|
)
|
|
218
233
|
external
|
|
219
234
|
virtual
|
|
220
|
-
restricted
|
|
235
|
+
restricted()
|
|
236
|
+
returns (Amount unstakedAmount, Amount feeAmount)
|
|
221
237
|
{
|
|
222
|
-
//
|
|
223
|
-
|
|
238
|
+
// checks
|
|
239
|
+
_checkNftType(bundleNftId, BUNDLE());
|
|
240
|
+
|
|
241
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
|
224
242
|
|
|
225
243
|
// ensure no open policies attached to bundle
|
|
226
244
|
BundleSet bundleManager = instance.getBundleSet();
|
|
@@ -229,29 +247,47 @@ contract BundleService is
|
|
|
229
247
|
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
|
230
248
|
}
|
|
231
249
|
|
|
232
|
-
//
|
|
233
|
-
|
|
250
|
+
// effects
|
|
251
|
+
{
|
|
252
|
+
// update bundle state
|
|
253
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
|
254
|
+
instanceStore.updateBundleState(bundleNftId, CLOSED());
|
|
255
|
+
bundleManager.lock(bundleNftId);
|
|
256
|
+
|
|
257
|
+
// decrease bundle counters
|
|
258
|
+
Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
|
|
259
|
+
feeAmount = instanceReader.getFeeAmount(bundleNftId);
|
|
260
|
+
unstakedAmount = balanceAmountWithFees - feeAmount;
|
|
261
|
+
_accountingService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
|
|
262
|
+
}
|
|
234
263
|
}
|
|
235
264
|
|
|
236
265
|
/// @inheritdoc IBundleService
|
|
237
266
|
function stake(
|
|
238
|
-
|
|
267
|
+
InstanceReader instanceReader,
|
|
268
|
+
InstanceStore instanceStore,
|
|
239
269
|
NftId bundleNftId,
|
|
240
270
|
Amount amount
|
|
241
271
|
)
|
|
242
272
|
external
|
|
243
273
|
virtual
|
|
244
|
-
|
|
274
|
+
restricted()
|
|
245
275
|
{
|
|
246
|
-
|
|
247
|
-
|
|
276
|
+
// checks
|
|
277
|
+
_checkNftType(bundleNftId, BUNDLE());
|
|
278
|
+
|
|
279
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
280
|
+
StateId bundleState = instanceReader.getBundleState(bundleNftId);
|
|
248
281
|
|
|
249
|
-
if(bundleState != ACTIVE()
|
|
282
|
+
if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
|
|
283
|
+
|| bundleInfo.expiredAt < TimestampLib.blockTimestamp()
|
|
284
|
+
|| bundleInfo.closedAt.gtz()) {
|
|
250
285
|
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
|
251
286
|
}
|
|
252
287
|
|
|
253
|
-
|
|
254
|
-
|
|
288
|
+
// effects
|
|
289
|
+
_accountingService.increaseBundleBalance(
|
|
290
|
+
instanceStore,
|
|
255
291
|
bundleNftId,
|
|
256
292
|
amount,
|
|
257
293
|
AmountLib.zero());
|
|
@@ -259,23 +295,25 @@ contract BundleService is
|
|
|
259
295
|
|
|
260
296
|
/// @inheritdoc IBundleService
|
|
261
297
|
function unstake(
|
|
262
|
-
|
|
298
|
+
InstanceStore instanceStore,
|
|
263
299
|
NftId bundleNftId,
|
|
264
300
|
Amount amount
|
|
265
301
|
)
|
|
266
302
|
external
|
|
267
303
|
virtual
|
|
268
|
-
|
|
304
|
+
restricted()
|
|
269
305
|
returns (Amount unstakedAmount)
|
|
270
306
|
{
|
|
271
|
-
|
|
307
|
+
// checks
|
|
308
|
+
_checkNftType(bundleNftId, BUNDLE());
|
|
309
|
+
|
|
272
310
|
(
|
|
273
311
|
Amount balanceAmount,
|
|
274
312
|
Amount lockedAmount,
|
|
275
313
|
Amount feeAmount
|
|
276
314
|
) = instanceStore.getAmounts(bundleNftId);
|
|
277
315
|
|
|
278
|
-
|
|
316
|
+
unstakedAmount = amount;
|
|
279
317
|
Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
|
|
280
318
|
|
|
281
319
|
// if amount is max, then unstake all available
|
|
@@ -288,25 +326,27 @@ contract BundleService is
|
|
|
288
326
|
revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
|
|
289
327
|
}
|
|
290
328
|
|
|
291
|
-
|
|
329
|
+
// effects
|
|
330
|
+
_accountingService.decreaseBundleBalance(
|
|
292
331
|
instanceStore,
|
|
293
332
|
bundleNftId,
|
|
294
333
|
unstakedAmount,
|
|
295
334
|
AmountLib.zero());
|
|
296
|
-
|
|
297
|
-
return unstakedAmount;
|
|
298
335
|
}
|
|
299
336
|
|
|
300
337
|
/// @inheritdoc IBundleService
|
|
301
338
|
function extend(NftId bundleNftId, Seconds lifetimeExtension)
|
|
302
339
|
external
|
|
303
340
|
virtual
|
|
304
|
-
|
|
341
|
+
restricted()
|
|
305
342
|
returns (Timestamp extendedExpiredAt)
|
|
306
343
|
{
|
|
344
|
+
// checks
|
|
345
|
+
_checkNftType(bundleNftId, BUNDLE());
|
|
346
|
+
|
|
307
347
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
|
308
348
|
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
|
309
|
-
StateId bundleState = instance.getInstanceReader().
|
|
349
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
|
310
350
|
|
|
311
351
|
// ensure bundle belongs to the pool
|
|
312
352
|
if (bundleInfo.poolNftId != poolNftId) {
|
|
@@ -322,17 +362,18 @@ contract BundleService is
|
|
|
322
362
|
revert ErrorBundleServiceExtensionLifetimeIsZero();
|
|
323
363
|
}
|
|
324
364
|
|
|
365
|
+
// effects
|
|
325
366
|
bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
|
|
326
|
-
|
|
367
|
+
extendedExpiredAt = bundleInfo.expiredAt;
|
|
327
368
|
|
|
328
|
-
|
|
369
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
|
329
370
|
|
|
330
|
-
|
|
371
|
+
emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, extendedExpiredAt);
|
|
331
372
|
}
|
|
332
373
|
|
|
333
374
|
|
|
334
375
|
function releaseCollateral(
|
|
335
|
-
|
|
376
|
+
InstanceStore instanceStore,
|
|
336
377
|
NftId policyNftId,
|
|
337
378
|
NftId bundleNftId,
|
|
338
379
|
Amount collateralAmount
|
|
@@ -341,96 +382,12 @@ contract BundleService is
|
|
|
341
382
|
virtual
|
|
342
383
|
restricted()
|
|
343
384
|
{
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
/// @dev unlinks policy from bundle
|
|
348
|
-
function unlinkPolicy(
|
|
349
|
-
IInstance instance,
|
|
350
|
-
NftId policyNftId
|
|
351
|
-
)
|
|
352
|
-
external
|
|
353
|
-
virtual
|
|
354
|
-
restricted
|
|
355
|
-
{
|
|
356
|
-
// ensure policy is closeable
|
|
357
|
-
if (!instance.getInstanceReader().policyIsCloseable(policyNftId)) {
|
|
358
|
-
revert ErrorBundleServicePolicyNotCloseable(policyNftId);
|
|
359
|
-
}
|
|
385
|
+
_checkNftType(policyNftId, POLICY());
|
|
386
|
+
_checkNftType(bundleNftId, BUNDLE());
|
|
360
387
|
|
|
361
|
-
|
|
388
|
+
instanceStore.decreaseLocked(bundleNftId, collateralAmount);
|
|
362
389
|
}
|
|
363
390
|
|
|
364
|
-
/// @inheritdoc IBundleService
|
|
365
|
-
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
|
366
|
-
public
|
|
367
|
-
virtual
|
|
368
|
-
// TODO: restricted() (once #462 is done)
|
|
369
|
-
returns (Amount withdrawnAmount)
|
|
370
|
-
{
|
|
371
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
|
372
|
-
InstanceReader reader = instance.getInstanceReader();
|
|
373
|
-
|
|
374
|
-
IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
|
|
375
|
-
address poolWallet = poolInfo.wallet;
|
|
376
|
-
|
|
377
|
-
IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
|
378
|
-
|
|
379
|
-
// determine withdrawn amount
|
|
380
|
-
withdrawnAmount = amount;
|
|
381
|
-
if (withdrawnAmount.gte(AmountLib.max())) {
|
|
382
|
-
withdrawnAmount = reader.getFeeAmount(bundleNftId);
|
|
383
|
-
} else {
|
|
384
|
-
if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
|
|
385
|
-
revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
if (withdrawnAmount.eqz()) {
|
|
390
|
-
revert ErrorBundleServiceFeesWithdrawAmountIsZero();
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
// check allowance
|
|
394
|
-
IERC20Metadata token = IERC20Metadata(poolInfo.token);
|
|
395
|
-
uint256 tokenAllowance = token.allowance(poolWallet, address(poolInfo.tokenHandler));
|
|
396
|
-
if (tokenAllowance < withdrawnAmount.toInt()) {
|
|
397
|
-
revert ErrorBundleServiceWalletAllowanceTooSmall(poolWallet, address(poolInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
// decrease fee counters by withdrawnAmount
|
|
401
|
-
{
|
|
402
|
-
InstanceStore store = instance.getInstanceStore();
|
|
403
|
-
// decrease fee amount of the bundle
|
|
404
|
-
_componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
|
|
405
|
-
// decrease pool balance
|
|
406
|
-
_componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
// transfer amount to bundle owner
|
|
410
|
-
{
|
|
411
|
-
address owner = getRegistry().ownerOf(bundleNftId);
|
|
412
|
-
// TODO: centralize token handling (issue #471)
|
|
413
|
-
poolInfo.tokenHandler.transfer(poolWallet, owner, withdrawnAmount);
|
|
414
|
-
|
|
415
|
-
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(token), withdrawnAmount);
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
/// @dev links policy to bundle
|
|
420
|
-
function _linkPolicy(IInstance instance, NftId policyNftId)
|
|
421
|
-
internal
|
|
422
|
-
{
|
|
423
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
|
424
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
|
425
|
-
|
|
426
|
-
// ensure policy has not yet been activated in a previous tx already
|
|
427
|
-
if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
|
|
428
|
-
revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
BundleSet bundleManager = instance.getBundleSet();
|
|
432
|
-
bundleManager.linkPolicy(policyNftId);
|
|
433
|
-
}
|
|
434
391
|
|
|
435
392
|
function _getDomain() internal pure override returns(ObjectType) {
|
|
436
393
|
return BUNDLE();
|
|
@@ -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(authority, registry);
|
|
21
|
+
IVersionable versionable = initialize(
|
|
22
|
+
registry,
|
|
23
|
+
address(svc),
|
|
24
24
|
data,
|
|
25
25
|
salt);
|
|
26
26
|
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity ^0.8.20;
|
|
3
3
|
|
|
4
|
+
import {IService} from "../shared/IService.sol";
|
|
5
|
+
import {IInstance} from "../instance/IInstance.sol";
|
|
6
|
+
|
|
4
7
|
import {Amount} from "../type/Amount.sol";
|
|
5
8
|
import {NftId} from "../type/NftId.sol";
|
|
6
9
|
import {Fee} from "../type/Fee.sol";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {IInstance} from "../instance/IInstance.sol";
|
|
10
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
|
11
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
|
10
12
|
import {Seconds} from "../type/Seconds.sol";
|
|
11
13
|
import {StateId} from "../type/StateId.sol";
|
|
12
14
|
import {Timestamp} from "../type/Timestamp.sol";
|
|
13
15
|
|
|
14
16
|
interface IBundleService is IService {
|
|
15
17
|
|
|
18
|
+
event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId);
|
|
16
19
|
event LogBundleServiceBundleActivated(NftId bundleNftId);
|
|
17
20
|
event LogBundleServiceBundleLocked(NftId bundleNftId);
|
|
18
21
|
|
|
@@ -25,26 +28,17 @@ interface IBundleService is IService {
|
|
|
25
28
|
error ErrorBundleServiceBundlePoolMismatch(NftId bundleNftId, NftId expectedPool, NftId actualPool);
|
|
26
29
|
|
|
27
30
|
error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
|
|
28
|
-
|
|
29
|
-
error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
|
30
|
-
error ErrorBundleServiceFeesWithdrawAmountIsZero();
|
|
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();
|
|
36
35
|
|
|
37
|
-
event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
|
|
38
36
|
event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
|
|
39
37
|
|
|
40
|
-
/// @dev
|
|
41
|
-
/// may only be called by pool service
|
|
38
|
+
/// @dev Create a new bundle for the specified attributes.
|
|
42
39
|
function create(
|
|
43
|
-
IInstance instance, // instance relevant for bundle
|
|
44
|
-
NftId poolNftId, // the pool the bundle will be linked to
|
|
45
40
|
address owner, // initial bundle owner
|
|
46
41
|
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
42
|
Seconds lifetime, // initial duration for which new policies are covered
|
|
49
43
|
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
|
50
44
|
)
|
|
@@ -52,17 +46,18 @@ interface IBundleService is IService {
|
|
|
52
46
|
returns(NftId bundleNftId); // the nft id of the newly created bundle
|
|
53
47
|
|
|
54
48
|
|
|
55
|
-
/// @dev increase bundle stakes by the specified amount
|
|
49
|
+
/// @dev increase bundle stakes by the specified amount. bundle must not be expired or closed
|
|
56
50
|
/// may only be called by the pool service
|
|
57
|
-
function stake(
|
|
51
|
+
function stake(
|
|
52
|
+
InstanceReader instanceReader,
|
|
53
|
+
InstanceStore instanceStore,
|
|
54
|
+
NftId bundleNftId,
|
|
55
|
+
Amount amount
|
|
56
|
+
) external;
|
|
58
57
|
|
|
59
58
|
/// @dev decrease bundle stakes by the specified amount
|
|
60
59
|
/// may only be called by the pool service
|
|
61
|
-
|
|
62
|
-
/// @param bundleNftId the bundle nft id
|
|
63
|
-
/// @param amount the amount to unstake (set to AmountLib.max() to unstake all available stakes)
|
|
64
|
-
/// @return unstakedAmount the effective unstaked amount
|
|
65
|
-
function unstake(IInstance instance, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
|
|
60
|
+
function unstake(InstanceStore instanceStore, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
|
|
66
61
|
|
|
67
62
|
/// @dev extend the lifetime of the bundle by the specified time in seconds
|
|
68
63
|
function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
|
|
@@ -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
|
|
@@ -110,24 +107,9 @@ interface IBundleService is IService {
|
|
|
110
107
|
/// @dev releases the specified collateral in the bundle
|
|
111
108
|
/// may only be called by pool service
|
|
112
109
|
function releaseCollateral(
|
|
113
|
-
|
|
110
|
+
InstanceStore instanceStore,
|
|
114
111
|
NftId policyNftId,
|
|
115
112
|
NftId bundleNftId,
|
|
116
113
|
Amount collateralAmount
|
|
117
114
|
) external;
|
|
118
|
-
|
|
119
|
-
/// @dev unlink policy from bundle
|
|
120
|
-
/// policy may only be unlinked if policy is closeable
|
|
121
|
-
/// may only be called by pool service
|
|
122
|
-
function unlinkPolicy(
|
|
123
|
-
IInstance instance,
|
|
124
|
-
NftId policyNftId
|
|
125
|
-
) external;
|
|
126
|
-
|
|
127
|
-
/// @dev Withdraw bundle feeds for the given bundle
|
|
128
|
-
/// @param bundleNftId the bundle Nft Id
|
|
129
|
-
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
|
130
|
-
/// @return withdrawnAmount the effective withdrawn amount
|
|
131
|
-
function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
|
|
132
|
-
|
|
133
115
|
}
|