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