@etherisc/gif-next 0.0.2-baec8d5-329 → 0.0.2-bafc958-412
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +21 -21
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- 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/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +42 -248
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -222
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +134 -294
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +53 -124
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +49 -62
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1660 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +410 -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 +1411 -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 +1517 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +71 -71
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +238 -123
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +34 -146
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +30 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +215 -219
- 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 +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +32 -238
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- 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 +0 -37
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -222
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -144
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +29 -80
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +12 -284
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +263 -201
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +82 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +125 -23
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +2 -95
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +2 -280
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +264 -248
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +35 -82
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +31 -162
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +26 -89
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +3 -225
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +185 -175
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +53 -100
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +184 -119
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -37
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +242 -321
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +50 -101
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +113 -265
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +52 -123
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +3 -225
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -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 +221 -21
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +419 -82
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +229 -114
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -130
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +22 -73
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +127 -199
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +55 -114
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -112
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +56 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -37
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +0 -42
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- 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/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -222
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -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 +6 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +4 -136
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -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 +0 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +42 -89
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -138
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +26 -77
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +89 -84
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +13 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- 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 +7 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +14 -65
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +1 -3
- package/contracts/authorization/Authorization.sol +0 -1
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/Distribution.sol +4 -10
- package/contracts/distribution/DistributionService.sol +35 -44
- package/contracts/distribution/IDistributionService.sol +9 -5
- package/contracts/examples/fire/FirePool.sol +76 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +316 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +16 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/IInstance.sol +7 -30
- package/contracts/instance/Instance.sol +10 -35
- package/contracts/instance/InstanceAdmin.sol +23 -4
- package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
- package/contracts/instance/InstanceReader.sol +32 -7
- package/contracts/instance/InstanceService.sol +60 -36
- package/contracts/instance/InstanceStore.sol +12 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +1 -6
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +22 -22
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/Oracle.sol +4 -7
- package/contracts/oracle/OracleService.sol +4 -3
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +5 -2
- package/contracts/pool/BundleService.sol +138 -42
- package/contracts/pool/IBundleService.sol +22 -8
- package/contracts/pool/IPoolService.sol +36 -26
- package/contracts/pool/Pool.sol +22 -24
- package/contracts/pool/PoolService.sol +155 -82
- package/contracts/product/ApplicationService.sol +41 -23
- package/contracts/product/BasicProduct.sol +3 -32
- package/contracts/product/ClaimService.sol +116 -45
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +28 -5
- package/contracts/product/IPolicyService.sol +27 -32
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +0 -1
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +280 -182
- package/contracts/product/PricingService.sol +44 -43
- package/contracts/product/Product.sol +67 -34
- package/contracts/product/{ProductService.sol → RiskService.sol} +5 -7
- package/contracts/product/{ProductServiceManager.sol → RiskServiceManager.sol} +8 -8
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +49 -15
- package/contracts/registry/Registry.sol +321 -195
- package/contracts/registry/RegistryAdmin.sol +150 -51
- package/contracts/registry/RegistryService.sol +2 -2
- package/contracts/registry/ReleaseRegistry.sol +12 -8
- package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
- package/contracts/shared/Component.sol +17 -29
- package/contracts/shared/ComponentService.sol +46 -27
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IComponentService.sol +5 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
- package/contracts/shared/IPolicyHolder.sol +0 -9
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +4 -4
- package/contracts/shared/NftOwnable.sol +7 -7
- package/contracts/shared/PolicyHolder.sol +7 -53
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +5 -5
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +10 -26
- package/contracts/staking/StakingService.sol +10 -14
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +5 -3
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ObjectType.sol +15 -11
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +1 -0
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +29 -10
- package/contracts/upgradeability/ProxyManager.sol +1 -1
- package/package.json +1 -1
- 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/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
@@ -1,8 +1,6 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
|
6
4
|
import {IRegistry} from "../registry/IRegistry.sol";
|
7
5
|
import {IInstance} from "../instance/IInstance.sol";
|
8
6
|
import {IComponentService} from "../shared/IComponentService.sol";
|
@@ -14,31 +12,22 @@ import {IPolicy} from "../instance/module/IPolicy.sol";
|
|
14
12
|
|
15
13
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
16
14
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
17
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
18
15
|
import {KEEP_STATE} from "../type/StateId.sol";
|
19
16
|
import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
|
20
17
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
21
18
|
import {IDistributionService} from "./IDistributionService.sol";
|
22
|
-
import {UFixed
|
19
|
+
import {UFixed} from "../type/UFixed.sol";
|
23
20
|
import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
|
24
21
|
import {ReferralId, ReferralLib} from "../type/Referral.sol";
|
25
22
|
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
26
23
|
import {IDistribution} from "../instance/module/IDistribution.sol";
|
27
24
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
28
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
29
25
|
|
30
26
|
|
31
27
|
contract DistributionService is
|
32
28
|
ComponentVerifyingService,
|
33
29
|
IDistributionService
|
34
30
|
{
|
35
|
-
using AmountLib for Amount;
|
36
|
-
using NftIdLib for NftId;
|
37
|
-
using TimestampLib for Timestamp;
|
38
|
-
using UFixedLib for UFixed;
|
39
|
-
using FeeLib for Fee;
|
40
|
-
using ReferralLib for ReferralId;
|
41
|
-
|
42
31
|
IComponentService private _componentService;
|
43
32
|
IInstanceService private _instanceService;
|
44
33
|
IRegistryService private _registryService;
|
@@ -48,21 +37,21 @@ contract DistributionService is
|
|
48
37
|
bytes memory data
|
49
38
|
)
|
50
39
|
internal
|
51
|
-
initializer
|
52
40
|
virtual override
|
41
|
+
initializer()
|
53
42
|
{
|
54
43
|
address initialOwner;
|
55
44
|
address registryAddress;
|
56
45
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
57
46
|
// TODO while DistributionService is not deployed in DistributionServiceManager constructor
|
58
47
|
// owner is DistributionServiceManager deployer
|
59
|
-
|
48
|
+
_initializeService(registryAddress, address(0), owner);
|
60
49
|
|
61
50
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
62
51
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
63
52
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
64
53
|
|
65
|
-
|
54
|
+
_registerInterface(type(IDistributionService).interfaceId);
|
66
55
|
}
|
67
56
|
|
68
57
|
|
@@ -142,7 +131,6 @@ contract DistributionService is
|
|
142
131
|
distributorType,
|
143
132
|
true, // active
|
144
133
|
data,
|
145
|
-
AmountLib.zero(),
|
146
134
|
0);
|
147
135
|
|
148
136
|
instance.getInstanceStore().createDistributor(distributorNftId, info);
|
@@ -218,11 +206,28 @@ contract DistributionService is
|
|
218
206
|
return referralId;
|
219
207
|
}
|
220
208
|
|
209
|
+
/// @inheritdoc IDistributionService
|
210
|
+
function processReferral(
|
211
|
+
NftId distributionNftId,
|
212
|
+
ReferralId referralId
|
213
|
+
)
|
214
|
+
external
|
215
|
+
virtual
|
216
|
+
restricted
|
217
|
+
{
|
218
|
+
if (referralIsValid(distributionNftId, referralId)) {
|
219
|
+
IInstance instance = _getInstanceForDistribution(distributionNftId);
|
220
|
+
// update book keeping for referral info
|
221
|
+
IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
|
222
|
+
referralInfo.usedReferrals += 1;
|
223
|
+
instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
|
224
|
+
}
|
225
|
+
}
|
221
226
|
|
222
227
|
function processSale(
|
223
228
|
NftId distributionNftId, // assume always of distribution type
|
224
229
|
ReferralId referralId,
|
225
|
-
IPolicy.
|
230
|
+
IPolicy.PremiumInfo memory premium
|
226
231
|
)
|
227
232
|
external
|
228
233
|
virtual
|
@@ -233,24 +238,22 @@ contract DistributionService is
|
|
233
238
|
InstanceStore store = instance.getInstanceStore();
|
234
239
|
|
235
240
|
// get distribution owner fee amount
|
236
|
-
Amount distributionOwnerFee =
|
241
|
+
Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
|
237
242
|
|
238
243
|
// update referral/distributor info if applicable
|
239
244
|
if (referralIsValid(distributionNftId, referralId)) {
|
240
245
|
|
241
246
|
// increase distribution balance by commission amount and distribution owner fee
|
242
|
-
Amount commissionAmount =
|
247
|
+
Amount commissionAmount = premium.commissionAmount;
|
243
248
|
_componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
|
244
249
|
|
245
250
|
// update book keeping for referral info
|
246
251
|
IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
|
247
|
-
|
248
|
-
|
252
|
+
|
253
|
+
_componentService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
|
249
254
|
|
250
255
|
// update book keeping for distributor info
|
251
256
|
IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
|
252
|
-
// TODO refactor sum of commission amount into a fee balance for distributors
|
253
|
-
distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
|
254
257
|
distributorInfo.numPoliciesSold += 1;
|
255
258
|
store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
|
256
259
|
} else {
|
@@ -272,44 +275,32 @@ contract DistributionService is
|
|
272
275
|
IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
|
273
276
|
address distributionWallet = distributionInfo.wallet;
|
274
277
|
|
275
|
-
|
278
|
+
Amount commissionAmount = reader.getFeeAmount(distributorNftId);
|
276
279
|
|
277
280
|
// determine withdrawn amount
|
278
281
|
withdrawnAmount = amount;
|
279
282
|
if (withdrawnAmount.gte(AmountLib.max())) {
|
280
|
-
withdrawnAmount =
|
283
|
+
withdrawnAmount = commissionAmount;
|
281
284
|
} else {
|
282
|
-
if (withdrawnAmount.gt(
|
283
|
-
revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount,
|
285
|
+
if (withdrawnAmount.gt(commissionAmount)) {
|
286
|
+
revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
|
284
287
|
}
|
285
288
|
}
|
286
289
|
|
287
|
-
if (withdrawnAmount.eqz()) {
|
288
|
-
revert ErrorDistributionServiceCommissionWithdrawAmountIsZero();
|
289
|
-
}
|
290
|
-
|
291
|
-
// check allowance
|
292
|
-
IERC20Metadata token = IERC20Metadata(distributionInfo.token);
|
293
|
-
uint256 tokenAllowance = token.allowance(distributionWallet, address(distributionInfo.tokenHandler));
|
294
|
-
if (tokenAllowance < withdrawnAmount.toInt()) {
|
295
|
-
revert ErrorDistributionServiceWalletAllowanceTooSmall(distributionWallet, address(distributionInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
|
296
|
-
}
|
297
|
-
|
298
290
|
// decrease fee counters by withdrawnAmount and update distributor info
|
299
291
|
{
|
300
292
|
InstanceStore store = instance.getInstanceStore();
|
293
|
+
// decrease fee counter for distribution balance
|
301
294
|
_componentService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
|
302
|
-
|
303
|
-
|
304
|
-
store.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
|
295
|
+
// decrease fee counter for distributor fee
|
296
|
+
_componentService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
|
305
297
|
}
|
306
298
|
|
307
299
|
// transfer amount to distributor
|
308
300
|
{
|
309
301
|
address distributor = getRegistry().ownerOf(distributorNftId);
|
310
|
-
|
311
|
-
|
312
|
-
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(token), withdrawnAmount);
|
302
|
+
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.token), withdrawnAmount);
|
303
|
+
distributionInfo.tokenHandler.distributeTokens(distributionWallet, distributor, withdrawnAmount);
|
313
304
|
}
|
314
305
|
}
|
315
306
|
|
@@ -3,7 +3,6 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
5
|
import {NftId} from "../type/NftId.sol";
|
6
|
-
import {Fee} from "../type/Fee.sol";
|
7
6
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
8
7
|
import {IService} from "../shared/IService.sol";
|
9
8
|
import {UFixed} from "../type/UFixed.sol";
|
@@ -28,9 +27,7 @@ interface IDistributionService is IService {
|
|
28
27
|
error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
|
29
28
|
|
30
29
|
error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
31
|
-
|
32
|
-
error ErrorDistributionServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
|
33
|
-
|
30
|
+
|
34
31
|
error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
|
35
32
|
error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
|
36
33
|
|
@@ -77,11 +74,18 @@ interface IDistributionService is IService {
|
|
77
74
|
external
|
78
75
|
returns (ReferralId referralId);
|
79
76
|
|
77
|
+
/// @dev callback from product service when a referral is used.
|
78
|
+
/// Calling this will increment the referral usage counter.
|
79
|
+
function processReferral(
|
80
|
+
NftId distributionNftId,
|
81
|
+
ReferralId referralId
|
82
|
+
) external;
|
83
|
+
|
80
84
|
/// @dev callback from product service when selling a policy for a specific referralId
|
81
85
|
function processSale(
|
82
86
|
NftId distributionNftId,
|
83
87
|
ReferralId referralId,
|
84
|
-
IPolicy.
|
88
|
+
IPolicy.PremiumInfo memory premium
|
85
89
|
) external;
|
86
90
|
|
87
91
|
function referralIsValid(
|
@@ -0,0 +1,76 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Amount, AmountLib} from "../../type/Amount.sol";
|
5
|
+
import {BasicPool} from "../../pool/BasicPool.sol";
|
6
|
+
import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
|
7
|
+
import {Fee} from "../../type/Fee.sol";
|
8
|
+
import {IAuthorization} from "../../authorization/IAuthorization.sol";
|
9
|
+
import {NftId} from "../../type/NftId.sol";
|
10
|
+
import {Seconds} from "../../type/Timestamp.sol";
|
11
|
+
import {UFixed} from "../../type/UFixed.sol";
|
12
|
+
|
13
|
+
contract FirePool is
|
14
|
+
BasicPool
|
15
|
+
{
|
16
|
+
|
17
|
+
constructor(
|
18
|
+
address registry,
|
19
|
+
NftId instanceNftId,
|
20
|
+
string memory componentName,
|
21
|
+
address token,
|
22
|
+
IAuthorization authorization
|
23
|
+
)
|
24
|
+
{
|
25
|
+
address initialOwner = msg.sender;
|
26
|
+
_intialize(
|
27
|
+
registry,
|
28
|
+
instanceNftId,
|
29
|
+
componentName,
|
30
|
+
token,
|
31
|
+
authorization,
|
32
|
+
initialOwner);
|
33
|
+
}
|
34
|
+
|
35
|
+
function _intialize(
|
36
|
+
address registry,
|
37
|
+
NftId instanceNftId,
|
38
|
+
string memory componentName,
|
39
|
+
address token,
|
40
|
+
IAuthorization authorization,
|
41
|
+
address initialOwner
|
42
|
+
)
|
43
|
+
internal
|
44
|
+
initializer
|
45
|
+
{
|
46
|
+
_initializeBasicPool(
|
47
|
+
registry,
|
48
|
+
instanceNftId,
|
49
|
+
authorization,
|
50
|
+
token,
|
51
|
+
componentName,
|
52
|
+
initialOwner);
|
53
|
+
}
|
54
|
+
|
55
|
+
function createBundle(
|
56
|
+
Fee memory fee,
|
57
|
+
Amount initialAmount,
|
58
|
+
Seconds lifetime
|
59
|
+
)
|
60
|
+
external
|
61
|
+
virtual
|
62
|
+
restricted()
|
63
|
+
returns(NftId bundleNftId, Amount netStakedAmount)
|
64
|
+
{
|
65
|
+
address owner = msg.sender;
|
66
|
+
Amount netStakedAmount;
|
67
|
+
bundleNftId = _createBundle(
|
68
|
+
owner,
|
69
|
+
fee,
|
70
|
+
lifetime,
|
71
|
+
"" // filter
|
72
|
+
);
|
73
|
+
netStakedAmount = _stake(bundleNftId, initialAmount);
|
74
|
+
}
|
75
|
+
|
76
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
4
|
+
pragma solidity ^0.8.20;
|
5
|
+
|
6
|
+
import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
|
7
|
+
import {FirePool} from "./FirePool.sol";
|
8
|
+
import {IAccess} from "../../../contracts/authorization/IAccess.sol";
|
9
|
+
import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
|
10
|
+
|
11
|
+
contract FirePoolAuthorization
|
12
|
+
is BasicPoolAuthorization
|
13
|
+
{
|
14
|
+
|
15
|
+
constructor(string memory poolName)
|
16
|
+
BasicPoolAuthorization(poolName)
|
17
|
+
{}
|
18
|
+
|
19
|
+
|
20
|
+
function _setupTargetAuthorizations()
|
21
|
+
internal
|
22
|
+
virtual override
|
23
|
+
{
|
24
|
+
super._setupTargetAuthorizations();
|
25
|
+
IAccess.FunctionInfo[] storage functions;
|
26
|
+
|
27
|
+
// authorize public role (open access to any account, only allows to lock target)
|
28
|
+
functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
|
29
|
+
// TODO: FirePool.createBundle must require a custom role (e.g. INVESTOR) instead of PUBLIC_ROLE
|
30
|
+
_authorize(functions, FirePool.createBundle.selector, "createBundle");
|
31
|
+
}
|
32
|
+
|
33
|
+
}
|
34
|
+
|
@@ -0,0 +1,316 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {ACTIVE, PAUSED} from "../../type/StateId.sol";
|
5
|
+
import {Amount, AmountLib} from "../../type/Amount.sol";
|
6
|
+
import {BasicProduct} from "../../product/BasicProduct.sol";
|
7
|
+
import {ClaimId} from "../../type/ClaimId.sol";
|
8
|
+
import {IAuthorization} from "../../authorization/IAuthorization.sol";
|
9
|
+
import {IOracleService} from "../../oracle/IOracleService.sol";
|
10
|
+
import {ORACLE} from "../../type/ObjectType.sol";
|
11
|
+
import {NftId} from "../../type/NftId.sol";
|
12
|
+
import {PayoutId} from "../../type/PayoutId.sol";
|
13
|
+
import {ReferralId, ReferralLib} from "../../type/Referral.sol";
|
14
|
+
import {RequestId} from "../../type/RequestId.sol";
|
15
|
+
import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
|
16
|
+
import {Seconds} from "../../type/Seconds.sol";
|
17
|
+
import {StateId} from "../../type/StateId.sol";
|
18
|
+
import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
|
19
|
+
import {UFixed, UFixedLib} from "../../type/UFixed.sol";
|
20
|
+
|
21
|
+
uint64 constant SPECIAL_ROLE_INT = 11111;
|
22
|
+
|
23
|
+
function HALF_YEAR() pure returns (Seconds) {
|
24
|
+
return Seconds.wrap(180 * 86400);
|
25
|
+
}
|
26
|
+
|
27
|
+
function ONE_YEAR() pure returns (Seconds) {
|
28
|
+
return Seconds.wrap(360 * 86400);
|
29
|
+
}
|
30
|
+
|
31
|
+
/// @dev This is the product component for the fire insurance example.
|
32
|
+
/// It show how to insure a house for a given suminsured in a city.
|
33
|
+
/// The risk is based on the city.
|
34
|
+
/// If a fire is reported in the city, the policy holder is able to submit a claim and get a payout.
|
35
|
+
contract FireProduct is
|
36
|
+
BasicProduct
|
37
|
+
{
|
38
|
+
string[] _cities;
|
39
|
+
// map from city name to the RiskId
|
40
|
+
mapping(string cityName => RiskId risk) private _riskMapping;
|
41
|
+
|
42
|
+
constructor(
|
43
|
+
address registry,
|
44
|
+
NftId instanceNftid,
|
45
|
+
string memory componentName,
|
46
|
+
address token,
|
47
|
+
address pool,
|
48
|
+
IAuthorization authorization
|
49
|
+
)
|
50
|
+
{
|
51
|
+
address initialOwner = msg.sender;
|
52
|
+
_initialize(
|
53
|
+
registry,
|
54
|
+
instanceNftid,
|
55
|
+
componentName,
|
56
|
+
token,
|
57
|
+
pool,
|
58
|
+
authorization,
|
59
|
+
initialOwner);
|
60
|
+
initializeCity("London");
|
61
|
+
}
|
62
|
+
|
63
|
+
function _initialize(
|
64
|
+
address registry,
|
65
|
+
NftId instanceNftid,
|
66
|
+
string memory componentName,
|
67
|
+
address token,
|
68
|
+
address pool,
|
69
|
+
IAuthorization authorization,
|
70
|
+
address initialOwner
|
71
|
+
)
|
72
|
+
internal
|
73
|
+
initializer
|
74
|
+
{
|
75
|
+
_initializeBasicProduct(
|
76
|
+
registry,
|
77
|
+
instanceNftid,
|
78
|
+
authorization,
|
79
|
+
initialOwner,
|
80
|
+
componentName,
|
81
|
+
token,
|
82
|
+
false,
|
83
|
+
pool,
|
84
|
+
address(0)); // no distribution
|
85
|
+
}
|
86
|
+
|
87
|
+
function pauseCity(
|
88
|
+
string memory cityName
|
89
|
+
)
|
90
|
+
public
|
91
|
+
restricted()
|
92
|
+
{
|
93
|
+
if (_riskMapping[cityName].eqz()) {
|
94
|
+
revert(); // TODO: custom error
|
95
|
+
}
|
96
|
+
|
97
|
+
_updateRiskState(
|
98
|
+
_riskMapping[cityName],
|
99
|
+
PAUSED()
|
100
|
+
);
|
101
|
+
}
|
102
|
+
|
103
|
+
function unpauseCity(
|
104
|
+
string memory cityName
|
105
|
+
)
|
106
|
+
public
|
107
|
+
restricted()
|
108
|
+
{
|
109
|
+
if (_riskMapping[cityName].eqz()) {
|
110
|
+
revert(); // TODO: custom error
|
111
|
+
}
|
112
|
+
|
113
|
+
_updateRiskState(
|
114
|
+
_riskMapping[cityName],
|
115
|
+
ACTIVE()
|
116
|
+
);
|
117
|
+
}
|
118
|
+
|
119
|
+
function calculatePremium(
|
120
|
+
string memory cityName,
|
121
|
+
Amount sumInsured,
|
122
|
+
Seconds lifetime,
|
123
|
+
NftId bundleNftId
|
124
|
+
)
|
125
|
+
public
|
126
|
+
view
|
127
|
+
returns (Amount premiumAmount)
|
128
|
+
{
|
129
|
+
RiskId riskId = _riskMapping[cityName];
|
130
|
+
if (riskId.eqz()) {
|
131
|
+
revert(); // TODO: custom error
|
132
|
+
}
|
133
|
+
premiumAmount = calculatePremium(
|
134
|
+
sumInsured,
|
135
|
+
riskId,
|
136
|
+
lifetime,
|
137
|
+
"",
|
138
|
+
bundleNftId,
|
139
|
+
ReferralLib.zero());
|
140
|
+
}
|
141
|
+
|
142
|
+
function calculateNetPremium(
|
143
|
+
Amount sumInsured,
|
144
|
+
RiskId,
|
145
|
+
Seconds lifetime,
|
146
|
+
bytes memory
|
147
|
+
)
|
148
|
+
external
|
149
|
+
view
|
150
|
+
virtual override
|
151
|
+
returns (Amount netPremiumAmount)
|
152
|
+
{
|
153
|
+
UFixed numDays = UFixedLib.toUFixed(lifetime.toInt() / 86400);
|
154
|
+
// to simplify time calculation we assume 360 days per year
|
155
|
+
UFixed pctOfYear = numDays / UFixedLib.toUFixed(360);
|
156
|
+
Amount premiumPerYear = AmountLib.toAmount(sumInsured.toInt() / 20);
|
157
|
+
return premiumPerYear.multiplyWith(pctOfYear);
|
158
|
+
}
|
159
|
+
|
160
|
+
function createApplication(
|
161
|
+
address applicationOwner,
|
162
|
+
string memory cityName,
|
163
|
+
Amount sumInsured,
|
164
|
+
Seconds lifetime,
|
165
|
+
NftId bundleNftId
|
166
|
+
)
|
167
|
+
public
|
168
|
+
restricted()
|
169
|
+
returns (NftId policyNftId)
|
170
|
+
{
|
171
|
+
address applicationOwner = msg.sender;
|
172
|
+
RiskId riskId = initializeCity(cityName);
|
173
|
+
|
174
|
+
Amount premiumAmount = calculatePremium(
|
175
|
+
sumInsured,
|
176
|
+
riskId,
|
177
|
+
lifetime,
|
178
|
+
"",
|
179
|
+
bundleNftId,
|
180
|
+
ReferralLib.zero());
|
181
|
+
|
182
|
+
return _createApplication(
|
183
|
+
applicationOwner,
|
184
|
+
riskId,
|
185
|
+
sumInsured,
|
186
|
+
premiumAmount,
|
187
|
+
lifetime,
|
188
|
+
bundleNftId,
|
189
|
+
ReferralLib.zero(),
|
190
|
+
""
|
191
|
+
);
|
192
|
+
}
|
193
|
+
|
194
|
+
function initializeCity(
|
195
|
+
string memory cityName
|
196
|
+
)
|
197
|
+
public
|
198
|
+
returns (RiskId riskId)
|
199
|
+
{
|
200
|
+
if (! _riskMapping[cityName].eqz()) {
|
201
|
+
return _riskMapping[cityName];
|
202
|
+
}
|
203
|
+
_cities.push(cityName);
|
204
|
+
riskId = RiskIdLib.toRiskId(cityName);
|
205
|
+
_createRisk(riskId, "");
|
206
|
+
_riskMapping[cityName] = riskId;
|
207
|
+
}
|
208
|
+
|
209
|
+
function createPolicy(
|
210
|
+
NftId applicationNftId,
|
211
|
+
bool requirePremiumPayment,
|
212
|
+
Timestamp activateAt
|
213
|
+
) public {
|
214
|
+
// TODO: implement createPolicy
|
215
|
+
|
216
|
+
// _createPolicy(applicationNftId, activateAt);
|
217
|
+
// if (requirePremiumPayment == true) {
|
218
|
+
// _collectPremium(applicationNftId, activateAt);
|
219
|
+
// }
|
220
|
+
}
|
221
|
+
|
222
|
+
function decline(
|
223
|
+
NftId policyNftId
|
224
|
+
)
|
225
|
+
public
|
226
|
+
restricted()
|
227
|
+
{
|
228
|
+
// TODO: implement decline
|
229
|
+
// _decline(policyNftId);
|
230
|
+
}
|
231
|
+
|
232
|
+
function expire(
|
233
|
+
NftId policyNftId,
|
234
|
+
Timestamp expireAt
|
235
|
+
)
|
236
|
+
public
|
237
|
+
restricted()
|
238
|
+
returns (Timestamp)
|
239
|
+
{
|
240
|
+
// TODO: implement expire
|
241
|
+
// return _expire(policyNftId, expireAt);
|
242
|
+
}
|
243
|
+
|
244
|
+
function close(
|
245
|
+
NftId policyNftId
|
246
|
+
)
|
247
|
+
public
|
248
|
+
restricted()
|
249
|
+
{
|
250
|
+
// TODO: implement close
|
251
|
+
// _close(policyNftId);
|
252
|
+
}
|
253
|
+
|
254
|
+
function submitClaim(
|
255
|
+
NftId policyNftId,
|
256
|
+
Amount claimAmount,
|
257
|
+
bytes memory submissionData
|
258
|
+
)
|
259
|
+
public
|
260
|
+
restricted()
|
261
|
+
returns (ClaimId)
|
262
|
+
{
|
263
|
+
// TODO: implement submitClaim
|
264
|
+
// return _submitClaim(policyNftId, claimAmount, submissionData);
|
265
|
+
|
266
|
+
// TODO: check if fire was reported in the city
|
267
|
+
// TODO: if yes, process payout and close claimn
|
268
|
+
// TODO: if no, decline claim
|
269
|
+
|
270
|
+
}
|
271
|
+
|
272
|
+
// TODO: no longer needed? -> remove
|
273
|
+
// function confirmClaim(
|
274
|
+
// NftId policyNftId,
|
275
|
+
// ClaimId claimId,
|
276
|
+
// Amount confirmedAmount,
|
277
|
+
// bytes memory processData
|
278
|
+
// ) public {
|
279
|
+
// // TODO: implement confirmClaim
|
280
|
+
// // _confirmClaim(policyNftId, claimId, confirmedAmount, processData);
|
281
|
+
// }
|
282
|
+
|
283
|
+
// TODO: no longer needed? -> remove
|
284
|
+
// function declineClaim(
|
285
|
+
// NftId policyNftId,
|
286
|
+
// ClaimId claimId,
|
287
|
+
// bytes memory processData
|
288
|
+
// ) public {
|
289
|
+
// // TODO: implement declineClaim
|
290
|
+
// // _declineClaim(policyNftId, claimId, processData);
|
291
|
+
// }
|
292
|
+
|
293
|
+
// TODO: no longer needed? -> remove
|
294
|
+
// function createPayout(
|
295
|
+
// NftId policyNftId,
|
296
|
+
// ClaimId claimId,
|
297
|
+
// Amount amount,
|
298
|
+
// bytes memory data
|
299
|
+
// ) public returns (PayoutId) {
|
300
|
+
// return _createPayout(policyNftId, claimId, amount, data);
|
301
|
+
// }
|
302
|
+
|
303
|
+
// TODO: add method to report fire per city with a percentage of payout
|
304
|
+
|
305
|
+
|
306
|
+
// TODO: no longer needed? -> remove
|
307
|
+
// function processPayout(
|
308
|
+
// NftId policyNftId,
|
309
|
+
// PayoutId payoutId
|
310
|
+
// ) public {
|
311
|
+
// TODO: implement process all pending payouts for a risk - arguments cityname and payout percentage
|
312
|
+
// _processPayout(policyNftId, payoutId);
|
313
|
+
// }
|
314
|
+
|
315
|
+
|
316
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {BasicProductAuthorization} from "../../product/BasicProductAuthorization.sol";
|
5
|
+
|
6
|
+
|
7
|
+
contract FireProductAuthorization
|
8
|
+
is BasicProductAuthorization
|
9
|
+
{
|
10
|
+
|
11
|
+
constructor(string memory poolName)
|
12
|
+
BasicProductAuthorization(poolName)
|
13
|
+
{}
|
14
|
+
|
15
|
+
}
|
16
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
|
5
|
+
|
6
|
+
/// @dev FireUSD is a stablecoin with 6 decimals and an initial supply of 1 Billion tokens.
|
7
|
+
contract FireUSD is ERC20 {
|
8
|
+
|
9
|
+
string public constant NAME = "FireUSD";
|
10
|
+
string public constant SYMBOL = "HOT";
|
11
|
+
uint8 public constant DECIMALS = 6;
|
12
|
+
uint256 public constant INITIAL_SUPPLY = 10**9 * 6**DECIMALS; // 1 Billion 1'000'000'000
|
13
|
+
|
14
|
+
constructor()
|
15
|
+
ERC20(NAME, SYMBOL)
|
16
|
+
{
|
17
|
+
_mint(
|
18
|
+
_msgSender(),
|
19
|
+
INITIAL_SUPPLY
|
20
|
+
);
|
21
|
+
}
|
22
|
+
|
23
|
+
function decimals() public pure override returns(uint8) {
|
24
|
+
return DECIMALS;
|
25
|
+
}
|
26
|
+
}
|