From c63e99e6400fe4f0b1cd1148e915e9d4734eefe1 Mon Sep 17 00:00:00 2001 From: shan Date: Fri, 23 Feb 2024 13:43:52 +0800 Subject: [PATCH] handle lender fund withdrawn --- packages/huma-shared/src/utils/credit.ts | 2 + packages/huma-shared/src/v2/abis/Pool.json | 312 +++++++---- .../huma-shared/src/v2/abis/types/Pool.ts | 505 ++++++++++++------ .../v2/abis/types/factories/Pool__factory.ts | 310 +++++++---- packages/huma-shared/src/v2/utils/const.ts | 6 + .../Lend/withdrawV2/1-ConfirmTransfer.tsx | 12 +- .../components/Lend/withdrawV2/2-Transfer.tsx | 4 +- .../src/components/Lend/withdrawV2/index.tsx | 48 +- 8 files changed, 792 insertions(+), 407 deletions(-) diff --git a/packages/huma-shared/src/utils/credit.ts b/packages/huma-shared/src/utils/credit.ts index d0bedef..5c80643 100644 --- a/packages/huma-shared/src/utils/credit.ts +++ b/packages/huma-shared/src/utils/credit.ts @@ -55,6 +55,7 @@ export enum LenderEvent { ReinvestYieldConfigSet = 6, CoverDeposited = 7, CoverRedeemed = 8, + LenderFundWithdrawn = 9, } export const CreditEventText = { @@ -76,6 +77,7 @@ export const LenderEventText = { [String(LenderEvent.RedemptionRequestAdded)]: 'Request redemption', [String(LenderEvent.RedemptionRequestRemoved)]: 'Cancel redemption request', [String(LenderEvent.LenderFundDisbursed)]: 'Withdraw', + [String(LenderEvent.LenderFundWithdrawn)]: 'Withdraw', [String(LenderEvent.CoverDeposited)]: 'Supply first loss cover', [String(LenderEvent.CoverRedeemed)]: 'Redeem first loss cover', } diff --git a/packages/huma-shared/src/v2/abis/Pool.json b/packages/huma-shared/src/v2/abis/Pool.json index 3cd8f4b..9079456 100644 --- a/packages/huma-shared/src/v2/abis/Pool.json +++ b/packages/huma-shared/src/v2/abis/Pool.json @@ -1,18 +1,64 @@ [ { "inputs": [], - "name": "notAuthorizedCaller", + "name": "AuthorizedContractCallerRequired", "type": "error" }, { "inputs": [], - "name": "todo", + "name": "ZeroAddressProvided", "type": "error" }, { - "inputs": [], - "name": "zeroAddressProvided", - "type": "error" + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "by", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "ready", + "type": "bool" + } + ], + "name": "FirstLossCoverWithdrawalReadinessChanged", + "type": "event" }, { "anonymous": false, @@ -105,55 +151,13 @@ "anonymous": false, "inputs": [ { - "indexed": false, - "internalType": "uint256", - "name": "refreshedTimestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "profit", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "loss", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "lossRecovery", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "seniorTotalAssets", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "juniorTotalAssets", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "seniorTotalLoss", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "juniorTotalLoss", - "type": "uint256" + "indexed": true, + "internalType": "address", + "name": "by", + "type": "address" } ], - "name": "PoolAssetsRefreshed", + "name": "PoolClosed", "type": "event" }, { @@ -214,25 +218,6 @@ "name": "PoolEnabled", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "by", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "ready", - "type": "bool" - } - ], - "name": "PoolReadyForFirstLossCoverWithdrawal", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -258,6 +243,52 @@ "name": "ProfitDistributed", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "closePool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "credit", + "outputs": [ + { + "internalType": "contract ICredit", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "creditManager", + "outputs": [ + { + "internalType": "contract ICreditManager", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "currentTranchesAssets", @@ -350,30 +381,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "coverAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "poolAssets", - "type": "uint256" - } - ], - "name": "getFirstLossCoverAvailableCap", - "outputs": [ - { - "internalType": "uint256", - "name": "availableCap", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "getFirstLossCovers", @@ -388,12 +395,18 @@ "type": "function" }, { - "inputs": [], - "name": "getReservedAssetsForFirstLossCovers", + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getTrancheAvailableCap", "outputs": [ { "internalType": "uint256", - "name": "reservedAssets", + "name": "availableCap", "type": "uint256" } ], @@ -404,7 +417,7 @@ "inputs": [ { "internalType": "contract PoolConfig", - "name": "_poolConfig", + "name": "poolConfig_", "type": "address" } ], @@ -413,19 +426,45 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "isPoolClosed", + "outputs": [ + { + "internalType": "bool", + "name": "isClosed", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "isPoolOn", "outputs": [ { "internalType": "bool", - "name": "status", + "name": "isOn", "type": "bool" } ], "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "juniorTranche", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "poolConfig", @@ -452,6 +491,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "readyForFirstLossCoverWithdrawal", @@ -465,11 +517,24 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "seniorTranche", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { "internalType": "contract PoolConfig", - "name": "_poolConfig", + "name": "poolConfig_", "type": "address" } ], @@ -482,7 +547,7 @@ "inputs": [ { "internalType": "bool", - "name": "ready", + "name": "isReady", "type": "bool" } ], @@ -491,13 +556,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "syncFirstLossCovers", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "totalAssets", @@ -543,11 +601,6 @@ "internalType": "uint96", "name": "juniorTotalAssets", "type": "uint96" - }, - { - "internalType": "uint64", - "name": "lastProfitDistributedTime", - "type": "uint64" } ], "stateMutability": "view", @@ -603,5 +656,36 @@ "outputs": [], "stateMutability": "nonpayable", "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" } ] diff --git a/packages/huma-shared/src/v2/abis/types/Pool.ts b/packages/huma-shared/src/v2/abis/types/Pool.ts index 57cb464..155a043 100644 --- a/packages/huma-shared/src/v2/abis/types/Pool.ts +++ b/packages/huma-shared/src/v2/abis/types/Pool.ts @@ -9,6 +9,7 @@ import type { CallOverrides, ContractTransaction, Overrides, + PayableOverrides, PopulatedTransaction, Signer, utils, @@ -29,6 +30,9 @@ import type { export interface PoolInterface extends utils.Interface { functions: { + 'closePool()': FunctionFragment + 'credit()': FunctionFragment + 'creditManager()': FunctionFragment 'currentTranchesAssets()': FunctionFragment 'disablePool()': FunctionFragment 'distributeLoss(uint256)': FunctionFragment @@ -37,17 +41,19 @@ export interface PoolInterface extends utils.Interface { 'enablePool()': FunctionFragment 'epochManager()': FunctionFragment 'feeManager()': FunctionFragment - 'getFirstLossCoverAvailableCap(address,uint256)': FunctionFragment 'getFirstLossCovers()': FunctionFragment - 'getReservedAssetsForFirstLossCovers()': FunctionFragment + 'getTrancheAvailableCap(uint256)': FunctionFragment 'initialize(address)': FunctionFragment + 'isPoolClosed()': FunctionFragment 'isPoolOn()': FunctionFragment + 'juniorTranche()': FunctionFragment 'poolConfig()': FunctionFragment 'poolSafe()': FunctionFragment + 'proxiableUUID()': FunctionFragment 'readyForFirstLossCoverWithdrawal()': FunctionFragment + 'seniorTranche()': FunctionFragment 'setPoolConfig(address)': FunctionFragment 'setReadyForFirstLossCoverWithdrawal(bool)': FunctionFragment - 'syncFirstLossCovers()': FunctionFragment 'totalAssets()': FunctionFragment 'trancheTotalAssets(uint256)': FunctionFragment 'tranchesAssets()': FunctionFragment @@ -55,10 +61,15 @@ export interface PoolInterface extends utils.Interface { 'tranchesPolicy()': FunctionFragment 'updatePoolConfigData()': FunctionFragment 'updateTranchesAssets(uint96[2])': FunctionFragment + 'upgradeTo(address)': FunctionFragment + 'upgradeToAndCall(address,bytes)': FunctionFragment } getFunction( nameOrSignatureOrTopic: + | 'closePool' + | 'credit' + | 'creditManager' | 'currentTranchesAssets' | 'disablePool' | 'distributeLoss' @@ -67,26 +78,36 @@ export interface PoolInterface extends utils.Interface { | 'enablePool' | 'epochManager' | 'feeManager' - | 'getFirstLossCoverAvailableCap' | 'getFirstLossCovers' - | 'getReservedAssetsForFirstLossCovers' + | 'getTrancheAvailableCap' | 'initialize' + | 'isPoolClosed' | 'isPoolOn' + | 'juniorTranche' | 'poolConfig' | 'poolSafe' + | 'proxiableUUID' | 'readyForFirstLossCoverWithdrawal' + | 'seniorTranche' | 'setPoolConfig' | 'setReadyForFirstLossCoverWithdrawal' - | 'syncFirstLossCovers' | 'totalAssets' | 'trancheTotalAssets' | 'tranchesAssets' | 'tranchesLosses' | 'tranchesPolicy' | 'updatePoolConfigData' - | 'updateTranchesAssets', + | 'updateTranchesAssets' + | 'upgradeTo' + | 'upgradeToAndCall', ): FunctionFragment + encodeFunctionData(functionFragment: 'closePool', values?: undefined): string + encodeFunctionData(functionFragment: 'credit', values?: undefined): string + encodeFunctionData( + functionFragment: 'creditManager', + values?: undefined, + ): string encodeFunctionData( functionFragment: 'currentTranchesAssets', values?: undefined, @@ -113,29 +134,41 @@ export interface PoolInterface extends utils.Interface { values?: undefined, ): string encodeFunctionData(functionFragment: 'feeManager', values?: undefined): string - encodeFunctionData( - functionFragment: 'getFirstLossCoverAvailableCap', - values: [PromiseOrValue, PromiseOrValue], - ): string encodeFunctionData( functionFragment: 'getFirstLossCovers', values?: undefined, ): string encodeFunctionData( - functionFragment: 'getReservedAssetsForFirstLossCovers', - values?: undefined, + functionFragment: 'getTrancheAvailableCap', + values: [PromiseOrValue], ): string encodeFunctionData( functionFragment: 'initialize', values: [PromiseOrValue], ): string + encodeFunctionData( + functionFragment: 'isPoolClosed', + values?: undefined, + ): string encodeFunctionData(functionFragment: 'isPoolOn', values?: undefined): string + encodeFunctionData( + functionFragment: 'juniorTranche', + values?: undefined, + ): string encodeFunctionData(functionFragment: 'poolConfig', values?: undefined): string encodeFunctionData(functionFragment: 'poolSafe', values?: undefined): string + encodeFunctionData( + functionFragment: 'proxiableUUID', + values?: undefined, + ): string encodeFunctionData( functionFragment: 'readyForFirstLossCoverWithdrawal', values?: undefined, ): string + encodeFunctionData( + functionFragment: 'seniorTranche', + values?: undefined, + ): string encodeFunctionData( functionFragment: 'setPoolConfig', values: [PromiseOrValue], @@ -144,10 +177,6 @@ export interface PoolInterface extends utils.Interface { functionFragment: 'setReadyForFirstLossCoverWithdrawal', values: [PromiseOrValue], ): string - encodeFunctionData( - functionFragment: 'syncFirstLossCovers', - values?: undefined, - ): string encodeFunctionData( functionFragment: 'totalAssets', values?: undefined, @@ -176,7 +205,21 @@ export interface PoolInterface extends utils.Interface { functionFragment: 'updateTranchesAssets', values: [[PromiseOrValue, PromiseOrValue]], ): string + encodeFunctionData( + functionFragment: 'upgradeTo', + values: [PromiseOrValue], + ): string + encodeFunctionData( + functionFragment: 'upgradeToAndCall', + values: [PromiseOrValue, PromiseOrValue], + ): string + decodeFunctionResult(functionFragment: 'closePool', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'credit', data: BytesLike): Result + decodeFunctionResult( + functionFragment: 'creditManager', + data: BytesLike, + ): Result decodeFunctionResult( functionFragment: 'currentTranchesAssets', data: BytesLike, @@ -201,35 +244,43 @@ export interface PoolInterface extends utils.Interface { ): Result decodeFunctionResult(functionFragment: 'feeManager', data: BytesLike): Result decodeFunctionResult( - functionFragment: 'getFirstLossCoverAvailableCap', + functionFragment: 'getFirstLossCovers', data: BytesLike, ): Result decodeFunctionResult( - functionFragment: 'getFirstLossCovers', + functionFragment: 'getTrancheAvailableCap', data: BytesLike, ): Result + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result decodeFunctionResult( - functionFragment: 'getReservedAssetsForFirstLossCovers', + functionFragment: 'isPoolClosed', data: BytesLike, ): Result - decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result decodeFunctionResult(functionFragment: 'isPoolOn', data: BytesLike): Result + decodeFunctionResult( + functionFragment: 'juniorTranche', + data: BytesLike, + ): Result decodeFunctionResult(functionFragment: 'poolConfig', data: BytesLike): Result decodeFunctionResult(functionFragment: 'poolSafe', data: BytesLike): Result + decodeFunctionResult( + functionFragment: 'proxiableUUID', + data: BytesLike, + ): Result decodeFunctionResult( functionFragment: 'readyForFirstLossCoverWithdrawal', data: BytesLike, ): Result decodeFunctionResult( - functionFragment: 'setPoolConfig', + functionFragment: 'seniorTranche', data: BytesLike, ): Result decodeFunctionResult( - functionFragment: 'setReadyForFirstLossCoverWithdrawal', + functionFragment: 'setPoolConfig', data: BytesLike, ): Result decodeFunctionResult( - functionFragment: 'syncFirstLossCovers', + functionFragment: 'setReadyForFirstLossCoverWithdrawal', data: BytesLike, ): Result decodeFunctionResult(functionFragment: 'totalAssets', data: BytesLike): Result @@ -257,33 +308,77 @@ export interface PoolInterface extends utils.Interface { functionFragment: 'updateTranchesAssets', data: BytesLike, ): Result + decodeFunctionResult(functionFragment: 'upgradeTo', data: BytesLike): Result + decodeFunctionResult( + functionFragment: 'upgradeToAndCall', + data: BytesLike, + ): Result events: { + 'AdminChanged(address,address)': EventFragment + 'BeaconUpgraded(address)': EventFragment + 'FirstLossCoverWithdrawalReadinessChanged(address,bool)': EventFragment 'Initialized(uint8)': EventFragment 'LossDistributed(uint256,uint256,uint256,uint256,uint256)': EventFragment 'LossRecoveryDistributed(uint256,uint256,uint256,uint256,uint256)': EventFragment - 'PoolAssetsRefreshed(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)': EventFragment + 'PoolClosed(address)': EventFragment 'PoolConfigCacheUpdated(address)': EventFragment 'PoolConfigChanged(address,address)': EventFragment 'PoolDisabled(address)': EventFragment 'PoolEnabled(address)': EventFragment - 'PoolReadyForFirstLossCoverWithdrawal(address,bool)': EventFragment 'ProfitDistributed(uint256,uint256,uint256)': EventFragment + 'Upgraded(address)': EventFragment } + getEvent(nameOrSignatureOrTopic: 'AdminChanged'): EventFragment + getEvent(nameOrSignatureOrTopic: 'BeaconUpgraded'): EventFragment + getEvent( + nameOrSignatureOrTopic: 'FirstLossCoverWithdrawalReadinessChanged', + ): EventFragment getEvent(nameOrSignatureOrTopic: 'Initialized'): EventFragment getEvent(nameOrSignatureOrTopic: 'LossDistributed'): EventFragment getEvent(nameOrSignatureOrTopic: 'LossRecoveryDistributed'): EventFragment - getEvent(nameOrSignatureOrTopic: 'PoolAssetsRefreshed'): EventFragment + getEvent(nameOrSignatureOrTopic: 'PoolClosed'): EventFragment getEvent(nameOrSignatureOrTopic: 'PoolConfigCacheUpdated'): EventFragment getEvent(nameOrSignatureOrTopic: 'PoolConfigChanged'): EventFragment getEvent(nameOrSignatureOrTopic: 'PoolDisabled'): EventFragment getEvent(nameOrSignatureOrTopic: 'PoolEnabled'): EventFragment - getEvent( - nameOrSignatureOrTopic: 'PoolReadyForFirstLossCoverWithdrawal', - ): EventFragment getEvent(nameOrSignatureOrTopic: 'ProfitDistributed'): EventFragment + getEvent(nameOrSignatureOrTopic: 'Upgraded'): EventFragment +} + +export interface AdminChangedEventObject { + previousAdmin: string + newAdmin: string +} +export type AdminChangedEvent = TypedEvent< + [string, string], + AdminChangedEventObject +> + +export type AdminChangedEventFilter = TypedEventFilter + +export interface BeaconUpgradedEventObject { + beacon: string +} +export type BeaconUpgradedEvent = TypedEvent< + [string], + BeaconUpgradedEventObject +> + +export type BeaconUpgradedEventFilter = TypedEventFilter + +export interface FirstLossCoverWithdrawalReadinessChangedEventObject { + by: string + ready: boolean } +export type FirstLossCoverWithdrawalReadinessChangedEvent = TypedEvent< + [string, boolean], + FirstLossCoverWithdrawalReadinessChangedEventObject +> + +export type FirstLossCoverWithdrawalReadinessChangedEventFilter = + TypedEventFilter export interface InitializedEventObject { version: number @@ -321,32 +416,12 @@ export type LossRecoveryDistributedEvent = TypedEvent< export type LossRecoveryDistributedEventFilter = TypedEventFilter -export interface PoolAssetsRefreshedEventObject { - refreshedTimestamp: BigNumber - profit: BigNumber - loss: BigNumber - lossRecovery: BigNumber - seniorTotalAssets: BigNumber - juniorTotalAssets: BigNumber - seniorTotalLoss: BigNumber - juniorTotalLoss: BigNumber +export interface PoolClosedEventObject { + by: string } -export type PoolAssetsRefreshedEvent = TypedEvent< - [ - BigNumber, - BigNumber, - BigNumber, - BigNumber, - BigNumber, - BigNumber, - BigNumber, - BigNumber, - ], - PoolAssetsRefreshedEventObject -> +export type PoolClosedEvent = TypedEvent<[string], PoolClosedEventObject> -export type PoolAssetsRefreshedEventFilter = - TypedEventFilter +export type PoolClosedEventFilter = TypedEventFilter export interface PoolConfigCacheUpdatedEventObject { poolConfig: string @@ -385,18 +460,6 @@ export type PoolEnabledEvent = TypedEvent<[string], PoolEnabledEventObject> export type PoolEnabledEventFilter = TypedEventFilter -export interface PoolReadyForFirstLossCoverWithdrawalEventObject { - by: string - ready: boolean -} -export type PoolReadyForFirstLossCoverWithdrawalEvent = TypedEvent< - [string, boolean], - PoolReadyForFirstLossCoverWithdrawalEventObject -> - -export type PoolReadyForFirstLossCoverWithdrawalEventFilter = - TypedEventFilter - export interface ProfitDistributedEventObject { profit: BigNumber seniorTotalAssets: BigNumber @@ -410,6 +473,13 @@ export type ProfitDistributedEvent = TypedEvent< export type ProfitDistributedEventFilter = TypedEventFilter +export interface UpgradedEventObject { + implementation: string +} +export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject> + +export type UpgradedEventFilter = TypedEventFilter + export interface Pool extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this attach(addressOrName: string): this @@ -437,6 +507,14 @@ export interface Pool extends BaseContract { removeListener: OnEvent functions: { + closePool( + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise + + credit(overrides?: CallOverrides): Promise<[string]> + + creditManager(overrides?: CallOverrides): Promise<[string]> + currentTranchesAssets( overrides?: CallOverrides, ): Promise<[[BigNumber, BigNumber]] & { assets: [BigNumber, BigNumber] }> @@ -468,46 +546,45 @@ export interface Pool extends BaseContract { feeManager(overrides?: CallOverrides): Promise<[string]> - getFirstLossCoverAvailableCap( - coverAddress: PromiseOrValue, - poolAssets: PromiseOrValue, - overrides?: CallOverrides, - ): Promise<[BigNumber] & { availableCap: BigNumber }> - getFirstLossCovers(overrides?: CallOverrides): Promise<[string[]]> - getReservedAssetsForFirstLossCovers( + getTrancheAvailableCap( + index: PromiseOrValue, overrides?: CallOverrides, - ): Promise<[BigNumber] & { reservedAssets: BigNumber }> + ): Promise<[BigNumber] & { availableCap: BigNumber }> initialize( - _poolConfig: PromiseOrValue, + poolConfig_: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue }, ): Promise - isPoolOn( + isPoolClosed( overrides?: CallOverrides, - ): Promise<[boolean] & { status: boolean }> + ): Promise<[boolean] & { isClosed: boolean }> + + isPoolOn(overrides?: CallOverrides): Promise<[boolean] & { isOn: boolean }> + + juniorTranche(overrides?: CallOverrides): Promise<[string]> poolConfig(overrides?: CallOverrides): Promise<[string]> poolSafe(overrides?: CallOverrides): Promise<[string]> + proxiableUUID(overrides?: CallOverrides): Promise<[string]> + readyForFirstLossCoverWithdrawal( overrides?: CallOverrides, ): Promise<[boolean]> + seniorTranche(overrides?: CallOverrides): Promise<[string]> + setPoolConfig( - _poolConfig: PromiseOrValue, + poolConfig_: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue }, ): Promise setReadyForFirstLossCoverWithdrawal( - ready: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise - - syncFirstLossCovers( + isReady: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue }, ): Promise @@ -519,10 +596,9 @@ export interface Pool extends BaseContract { ): Promise<[BigNumber]> tranchesAssets(overrides?: CallOverrides): Promise< - [BigNumber, BigNumber, BigNumber] & { + [BigNumber, BigNumber] & { seniorTotalAssets: BigNumber juniorTotalAssets: BigNumber - lastProfitDistributedTime: BigNumber } > @@ -542,8 +618,27 @@ export interface Pool extends BaseContract { assets: [PromiseOrValue, PromiseOrValue], overrides?: Overrides & { from?: PromiseOrValue }, ): Promise + + upgradeTo( + newImplementation: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise + + upgradeToAndCall( + newImplementation: PromiseOrValue, + data: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue }, + ): Promise } + closePool( + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise + + credit(overrides?: CallOverrides): Promise + + creditManager(overrides?: CallOverrides): Promise + currentTranchesAssets( overrides?: CallOverrides, ): Promise<[BigNumber, BigNumber]> @@ -575,42 +670,41 @@ export interface Pool extends BaseContract { feeManager(overrides?: CallOverrides): Promise - getFirstLossCoverAvailableCap( - coverAddress: PromiseOrValue, - poolAssets: PromiseOrValue, - overrides?: CallOverrides, - ): Promise - getFirstLossCovers(overrides?: CallOverrides): Promise - getReservedAssetsForFirstLossCovers( + getTrancheAvailableCap( + index: PromiseOrValue, overrides?: CallOverrides, ): Promise initialize( - _poolConfig: PromiseOrValue, + poolConfig_: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue }, ): Promise + isPoolClosed(overrides?: CallOverrides): Promise + isPoolOn(overrides?: CallOverrides): Promise + juniorTranche(overrides?: CallOverrides): Promise + poolConfig(overrides?: CallOverrides): Promise poolSafe(overrides?: CallOverrides): Promise + proxiableUUID(overrides?: CallOverrides): Promise + readyForFirstLossCoverWithdrawal(overrides?: CallOverrides): Promise + seniorTranche(overrides?: CallOverrides): Promise + setPoolConfig( - _poolConfig: PromiseOrValue, + poolConfig_: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue }, ): Promise setReadyForFirstLossCoverWithdrawal( - ready: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise - - syncFirstLossCovers( + isReady: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue }, ): Promise @@ -622,10 +716,9 @@ export interface Pool extends BaseContract { ): Promise tranchesAssets(overrides?: CallOverrides): Promise< - [BigNumber, BigNumber, BigNumber] & { + [BigNumber, BigNumber] & { seniorTotalAssets: BigNumber juniorTotalAssets: BigNumber - lastProfitDistributedTime: BigNumber } > @@ -646,7 +739,24 @@ export interface Pool extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue }, ): Promise + upgradeTo( + newImplementation: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise + + upgradeToAndCall( + newImplementation: PromiseOrValue, + data: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue }, + ): Promise + callStatic: { + closePool(overrides?: CallOverrides): Promise + + credit(overrides?: CallOverrides): Promise + + creditManager(overrides?: CallOverrides): Promise + currentTranchesAssets( overrides?: CallOverrides, ): Promise<[BigNumber, BigNumber]> @@ -674,45 +784,46 @@ export interface Pool extends BaseContract { feeManager(overrides?: CallOverrides): Promise - getFirstLossCoverAvailableCap( - coverAddress: PromiseOrValue, - poolAssets: PromiseOrValue, - overrides?: CallOverrides, - ): Promise - getFirstLossCovers(overrides?: CallOverrides): Promise - getReservedAssetsForFirstLossCovers( + getTrancheAvailableCap( + index: PromiseOrValue, overrides?: CallOverrides, ): Promise initialize( - _poolConfig: PromiseOrValue, + poolConfig_: PromiseOrValue, overrides?: CallOverrides, ): Promise + isPoolClosed(overrides?: CallOverrides): Promise + isPoolOn(overrides?: CallOverrides): Promise + juniorTranche(overrides?: CallOverrides): Promise + poolConfig(overrides?: CallOverrides): Promise poolSafe(overrides?: CallOverrides): Promise + proxiableUUID(overrides?: CallOverrides): Promise + readyForFirstLossCoverWithdrawal( overrides?: CallOverrides, ): Promise + seniorTranche(overrides?: CallOverrides): Promise + setPoolConfig( - _poolConfig: PromiseOrValue, + poolConfig_: PromiseOrValue, overrides?: CallOverrides, ): Promise setReadyForFirstLossCoverWithdrawal( - ready: PromiseOrValue, + isReady: PromiseOrValue, overrides?: CallOverrides, ): Promise - syncFirstLossCovers(overrides?: CallOverrides): Promise - totalAssets(overrides?: CallOverrides): Promise trancheTotalAssets( @@ -721,10 +832,9 @@ export interface Pool extends BaseContract { ): Promise tranchesAssets(overrides?: CallOverrides): Promise< - [BigNumber, BigNumber, BigNumber] & { + [BigNumber, BigNumber] & { seniorTotalAssets: BigNumber juniorTotalAssets: BigNumber - lastProfitDistributedTime: BigNumber } > @@ -742,9 +852,42 @@ export interface Pool extends BaseContract { assets: [PromiseOrValue, PromiseOrValue], overrides?: CallOverrides, ): Promise + + upgradeTo( + newImplementation: PromiseOrValue, + overrides?: CallOverrides, + ): Promise + + upgradeToAndCall( + newImplementation: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides, + ): Promise } filters: { + 'AdminChanged(address,address)'( + previousAdmin?: null, + newAdmin?: null, + ): AdminChangedEventFilter + AdminChanged(previousAdmin?: null, newAdmin?: null): AdminChangedEventFilter + + 'BeaconUpgraded(address)'( + beacon?: PromiseOrValue | null, + ): BeaconUpgradedEventFilter + BeaconUpgraded( + beacon?: PromiseOrValue | null, + ): BeaconUpgradedEventFilter + + 'FirstLossCoverWithdrawalReadinessChanged(address,bool)'( + by?: PromiseOrValue | null, + ready?: null, + ): FirstLossCoverWithdrawalReadinessChangedEventFilter + FirstLossCoverWithdrawalReadinessChanged( + by?: PromiseOrValue | null, + ready?: null, + ): FirstLossCoverWithdrawalReadinessChangedEventFilter + 'Initialized(uint8)'(version?: null): InitializedEventFilter Initialized(version?: null): InitializedEventFilter @@ -778,26 +921,10 @@ export interface Pool extends BaseContract { juniorTotalLoss?: null, ): LossRecoveryDistributedEventFilter - 'PoolAssetsRefreshed(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)'( - refreshedTimestamp?: null, - profit?: null, - loss?: null, - lossRecovery?: null, - seniorTotalAssets?: null, - juniorTotalAssets?: null, - seniorTotalLoss?: null, - juniorTotalLoss?: null, - ): PoolAssetsRefreshedEventFilter - PoolAssetsRefreshed( - refreshedTimestamp?: null, - profit?: null, - loss?: null, - lossRecovery?: null, - seniorTotalAssets?: null, - juniorTotalAssets?: null, - seniorTotalLoss?: null, - juniorTotalLoss?: null, - ): PoolAssetsRefreshedEventFilter + 'PoolClosed(address)'( + by?: PromiseOrValue | null, + ): PoolClosedEventFilter + PoolClosed(by?: PromiseOrValue | null): PoolClosedEventFilter 'PoolConfigCacheUpdated(address)'( poolConfig?: PromiseOrValue | null, @@ -825,15 +952,6 @@ export interface Pool extends BaseContract { ): PoolEnabledEventFilter PoolEnabled(by?: PromiseOrValue | null): PoolEnabledEventFilter - 'PoolReadyForFirstLossCoverWithdrawal(address,bool)'( - by?: PromiseOrValue | null, - ready?: null, - ): PoolReadyForFirstLossCoverWithdrawalEventFilter - PoolReadyForFirstLossCoverWithdrawal( - by?: PromiseOrValue | null, - ready?: null, - ): PoolReadyForFirstLossCoverWithdrawalEventFilter - 'ProfitDistributed(uint256,uint256,uint256)'( profit?: null, seniorTotalAssets?: null, @@ -844,9 +962,24 @@ export interface Pool extends BaseContract { seniorTotalAssets?: null, juniorTotalAssets?: null, ): ProfitDistributedEventFilter + + 'Upgraded(address)'( + implementation?: PromiseOrValue | null, + ): UpgradedEventFilter + Upgraded( + implementation?: PromiseOrValue | null, + ): UpgradedEventFilter } estimateGas: { + closePool( + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise + + credit(overrides?: CallOverrides): Promise + + creditManager(overrides?: CallOverrides): Promise + currentTranchesAssets(overrides?: CallOverrides): Promise disablePool( @@ -876,44 +1009,43 @@ export interface Pool extends BaseContract { feeManager(overrides?: CallOverrides): Promise - getFirstLossCoverAvailableCap( - coverAddress: PromiseOrValue, - poolAssets: PromiseOrValue, - overrides?: CallOverrides, - ): Promise - getFirstLossCovers(overrides?: CallOverrides): Promise - getReservedAssetsForFirstLossCovers( + getTrancheAvailableCap( + index: PromiseOrValue, overrides?: CallOverrides, ): Promise initialize( - _poolConfig: PromiseOrValue, + poolConfig_: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue }, ): Promise + isPoolClosed(overrides?: CallOverrides): Promise + isPoolOn(overrides?: CallOverrides): Promise + juniorTranche(overrides?: CallOverrides): Promise + poolConfig(overrides?: CallOverrides): Promise poolSafe(overrides?: CallOverrides): Promise + proxiableUUID(overrides?: CallOverrides): Promise + readyForFirstLossCoverWithdrawal( overrides?: CallOverrides, ): Promise + seniorTranche(overrides?: CallOverrides): Promise + setPoolConfig( - _poolConfig: PromiseOrValue, + poolConfig_: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue }, ): Promise setReadyForFirstLossCoverWithdrawal( - ready: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise - - syncFirstLossCovers( + isReady: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue }, ): Promise @@ -938,9 +1070,28 @@ export interface Pool extends BaseContract { assets: [PromiseOrValue, PromiseOrValue], overrides?: Overrides & { from?: PromiseOrValue }, ): Promise + + upgradeTo( + newImplementation: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise + + upgradeToAndCall( + newImplementation: PromiseOrValue, + data: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue }, + ): Promise } populateTransaction: { + closePool( + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise + + credit(overrides?: CallOverrides): Promise + + creditManager(overrides?: CallOverrides): Promise + currentTranchesAssets( overrides?: CallOverrides, ): Promise @@ -972,44 +1123,43 @@ export interface Pool extends BaseContract { feeManager(overrides?: CallOverrides): Promise - getFirstLossCoverAvailableCap( - coverAddress: PromiseOrValue, - poolAssets: PromiseOrValue, - overrides?: CallOverrides, - ): Promise - getFirstLossCovers(overrides?: CallOverrides): Promise - getReservedAssetsForFirstLossCovers( + getTrancheAvailableCap( + index: PromiseOrValue, overrides?: CallOverrides, ): Promise initialize( - _poolConfig: PromiseOrValue, + poolConfig_: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue }, ): Promise + isPoolClosed(overrides?: CallOverrides): Promise + isPoolOn(overrides?: CallOverrides): Promise + juniorTranche(overrides?: CallOverrides): Promise + poolConfig(overrides?: CallOverrides): Promise poolSafe(overrides?: CallOverrides): Promise + proxiableUUID(overrides?: CallOverrides): Promise + readyForFirstLossCoverWithdrawal( overrides?: CallOverrides, ): Promise + seniorTranche(overrides?: CallOverrides): Promise + setPoolConfig( - _poolConfig: PromiseOrValue, + poolConfig_: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue }, ): Promise setReadyForFirstLossCoverWithdrawal( - ready: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue }, - ): Promise - - syncFirstLossCovers( + isReady: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue }, ): Promise @@ -1034,5 +1184,16 @@ export interface Pool extends BaseContract { assets: [PromiseOrValue, PromiseOrValue], overrides?: Overrides & { from?: PromiseOrValue }, ): Promise + + upgradeTo( + newImplementation: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise + + upgradeToAndCall( + newImplementation: PromiseOrValue, + data: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue }, + ): Promise } } diff --git a/packages/huma-shared/src/v2/abis/types/factories/Pool__factory.ts b/packages/huma-shared/src/v2/abis/types/factories/Pool__factory.ts index ede25ea..12db4c6 100644 --- a/packages/huma-shared/src/v2/abis/types/factories/Pool__factory.ts +++ b/packages/huma-shared/src/v2/abis/types/factories/Pool__factory.ts @@ -9,18 +9,64 @@ import type { Pool, PoolInterface } from '../Pool' const _abi = [ { inputs: [], - name: 'notAuthorizedCaller', + name: 'AuthorizedContractCallerRequired', type: 'error', }, { inputs: [], - name: 'todo', + name: 'ZeroAddressProvided', type: 'error', }, { - inputs: [], - name: 'zeroAddressProvided', - type: 'error', + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'previousAdmin', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'newAdmin', + type: 'address', + }, + ], + name: 'AdminChanged', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'beacon', + type: 'address', + }, + ], + name: 'BeaconUpgraded', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'by', + type: 'address', + }, + { + indexed: false, + internalType: 'bool', + name: 'ready', + type: 'bool', + }, + ], + name: 'FirstLossCoverWithdrawalReadinessChanged', + type: 'event', }, { anonymous: false, @@ -113,55 +159,13 @@ const _abi = [ anonymous: false, inputs: [ { - indexed: false, - internalType: 'uint256', - name: 'refreshedTimestamp', - type: 'uint256', - }, - { - indexed: false, - internalType: 'uint256', - name: 'profit', - type: 'uint256', - }, - { - indexed: false, - internalType: 'uint256', - name: 'loss', - type: 'uint256', - }, - { - indexed: false, - internalType: 'uint256', - name: 'lossRecovery', - type: 'uint256', - }, - { - indexed: false, - internalType: 'uint256', - name: 'seniorTotalAssets', - type: 'uint256', - }, - { - indexed: false, - internalType: 'uint256', - name: 'juniorTotalAssets', - type: 'uint256', - }, - { - indexed: false, - internalType: 'uint256', - name: 'seniorTotalLoss', - type: 'uint256', - }, - { - indexed: false, - internalType: 'uint256', - name: 'juniorTotalLoss', - type: 'uint256', + indexed: true, + internalType: 'address', + name: 'by', + type: 'address', }, ], - name: 'PoolAssetsRefreshed', + name: 'PoolClosed', type: 'event', }, { @@ -222,25 +226,6 @@ const _abi = [ name: 'PoolEnabled', type: 'event', }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'by', - type: 'address', - }, - { - indexed: false, - internalType: 'bool', - name: 'ready', - type: 'bool', - }, - ], - name: 'PoolReadyForFirstLossCoverWithdrawal', - type: 'event', - }, { anonymous: false, inputs: [ @@ -266,6 +251,52 @@ const _abi = [ name: 'ProfitDistributed', type: 'event', }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'implementation', + type: 'address', + }, + ], + name: 'Upgraded', + type: 'event', + }, + { + inputs: [], + name: 'closePool', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'credit', + outputs: [ + { + internalType: 'contract ICredit', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'creditManager', + outputs: [ + { + internalType: 'contract ICreditManager', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, { inputs: [], name: 'currentTranchesAssets', @@ -359,19 +390,27 @@ const _abi = [ type: 'function', }, { - inputs: [ + inputs: [], + name: 'getFirstLossCovers', + outputs: [ { - internalType: 'address', - name: 'coverAddress', - type: 'address', + internalType: 'contract IFirstLossCover[]', + name: '', + type: 'address[]', }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ { internalType: 'uint256', - name: 'poolAssets', + name: 'index', type: 'uint256', }, ], - name: 'getFirstLossCoverAvailableCap', + name: 'getTrancheAvailableCap', outputs: [ { internalType: 'uint256', @@ -383,52 +422,52 @@ const _abi = [ type: 'function', }, { - inputs: [], - name: 'getFirstLossCovers', - outputs: [ + inputs: [ { - internalType: 'contract IFirstLossCover[]', - name: '', - type: 'address[]', + internalType: 'contract PoolConfig', + name: 'poolConfig_', + type: 'address', }, ], - stateMutability: 'view', + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', type: 'function', }, { inputs: [], - name: 'getReservedAssetsForFirstLossCovers', + name: 'isPoolClosed', outputs: [ { - internalType: 'uint256', - name: 'reservedAssets', - type: 'uint256', + internalType: 'bool', + name: 'isClosed', + type: 'bool', }, ], stateMutability: 'view', type: 'function', }, { - inputs: [ + inputs: [], + name: 'isPoolOn', + outputs: [ { - internalType: 'contract PoolConfig', - name: '_poolConfig', - type: 'address', + internalType: 'bool', + name: 'isOn', + type: 'bool', }, ], - name: 'initialize', - outputs: [], - stateMutability: 'nonpayable', + stateMutability: 'view', type: 'function', }, { inputs: [], - name: 'isPoolOn', + name: 'juniorTranche', outputs: [ { - internalType: 'bool', - name: 'status', - type: 'bool', + internalType: 'address', + name: '', + type: 'address', }, ], stateMutability: 'view', @@ -460,6 +499,19 @@ const _abi = [ stateMutability: 'view', type: 'function', }, + { + inputs: [], + name: 'proxiableUUID', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, { inputs: [], name: 'readyForFirstLossCoverWithdrawal', @@ -473,11 +525,24 @@ const _abi = [ stateMutability: 'view', type: 'function', }, + { + inputs: [], + name: 'seniorTranche', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, { inputs: [ { internalType: 'contract PoolConfig', - name: '_poolConfig', + name: 'poolConfig_', type: 'address', }, ], @@ -490,7 +555,7 @@ const _abi = [ inputs: [ { internalType: 'bool', - name: 'ready', + name: 'isReady', type: 'bool', }, ], @@ -499,13 +564,6 @@ const _abi = [ stateMutability: 'nonpayable', type: 'function', }, - { - inputs: [], - name: 'syncFirstLossCovers', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, { inputs: [], name: 'totalAssets', @@ -552,11 +610,6 @@ const _abi = [ name: 'juniorTotalAssets', type: 'uint96', }, - { - internalType: 'uint64', - name: 'lastProfitDistributedTime', - type: 'uint64', - }, ], stateMutability: 'view', type: 'function', @@ -612,6 +665,37 @@ const _abi = [ stateMutability: 'nonpayable', type: 'function', }, + { + inputs: [ + { + internalType: 'address', + name: 'newImplementation', + type: 'address', + }, + ], + name: 'upgradeTo', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'newImplementation', + type: 'address', + }, + { + internalType: 'bytes', + name: 'data', + type: 'bytes', + }, + ], + name: 'upgradeToAndCall', + outputs: [], + stateMutability: 'payable', + type: 'function', + }, ] as const export class Pool__factory { diff --git a/packages/huma-shared/src/v2/utils/const.ts b/packages/huma-shared/src/v2/utils/const.ts index c88b2bd..86b3d14 100644 --- a/packages/huma-shared/src/v2/utils/const.ts +++ b/packages/huma-shared/src/v2/utils/const.ts @@ -15,3 +15,9 @@ export enum CreditStateV2 { Delayed, Defaulted, } + +export enum PoolStatusV2 { + Off, // The pool is temporarily turned off. + On, // The pool is active. + Closed, // The pool is permanently closed after maturity. +} diff --git a/packages/huma-widget/src/components/Lend/withdrawV2/1-ConfirmTransfer.tsx b/packages/huma-widget/src/components/Lend/withdrawV2/1-ConfirmTransfer.tsx index 9f8b401..049574d 100644 --- a/packages/huma-widget/src/components/Lend/withdrawV2/1-ConfirmTransfer.tsx +++ b/packages/huma-widget/src/components/Lend/withdrawV2/1-ConfirmTransfer.tsx @@ -21,6 +21,7 @@ type Props = { tranche: TrancheType poolUnderlyingToken: UnderlyingTokenInfo redemptionStatus: TrancheRedemptionStatus + poolIsClosed: boolean } export function ConfirmTransfer({ @@ -28,6 +29,7 @@ export function ConfirmTransfer({ tranche, poolUnderlyingToken, redemptionStatus, + poolIsClosed, }: Props): React.ReactElement { const theme = useTheme() const dispatch = useDispatch() @@ -105,10 +107,12 @@ export function ConfirmTransfer({ subTitle='Withdraw all the available amount' > - - Shares processed - {sharesProcessed} - + {!poolIsClosed && ( + + Shares processed + {sharesProcessed} + + )} Price Per Share diff --git a/packages/huma-widget/src/components/Lend/withdrawV2/2-Transfer.tsx b/packages/huma-widget/src/components/Lend/withdrawV2/2-Transfer.tsx index 67971de..669fcac 100644 --- a/packages/huma-widget/src/components/Lend/withdrawV2/2-Transfer.tsx +++ b/packages/huma-widget/src/components/Lend/withdrawV2/2-Transfer.tsx @@ -14,11 +14,13 @@ import { TxSendModalV2 } from '../../TxSendModalV2' type Props = { poolInfo: PoolInfoV2 tranche: TrancheType + poolIsClosed: boolean } export function Transfer({ poolInfo, tranche, + poolIsClosed, }: Props): React.ReactElement | null { const dispatch = useAppDispatch() const { account, provider } = useWeb3React() @@ -40,7 +42,7 @@ export function Transfer({ return ( diff --git a/packages/huma-widget/src/components/Lend/withdrawV2/index.tsx b/packages/huma-widget/src/components/Lend/withdrawV2/index.tsx index 1e6befd..095bb00 100644 --- a/packages/huma-widget/src/components/Lend/withdrawV2/index.tsx +++ b/packages/huma-widget/src/components/Lend/withdrawV2/index.tsx @@ -1,4 +1,5 @@ import { + getPoolContractV2, getTrancheRedemptionStatusV2, POOL_NAME, TrancheRedemptionStatus, @@ -7,7 +8,7 @@ import { usePoolUnderlyingTokenInfoV2, } from '@huma-finance/shared' import { useWeb3React } from '@web3-react/core' -import React, { useCallback, useEffect } from 'react' +import React, { useCallback, useEffect, useState } from 'react' import { useDispatch } from 'react-redux' import { useAppSelector } from '../../../hooks/useRedux' @@ -54,6 +55,24 @@ export function LendWithdrawV2({ const [redemptionStatus, setRedemptionStatus] = React.useState< TrancheRedemptionStatus | undefined >() + const [poolIsClosed, setPoolIsClosed] = useState( + undefined, + ) + + useEffect(() => { + const fetchData = async () => { + if (account && provider) { + const result = await getTrancheRedemptionStatusV2( + poolName, + trancheType, + account, + provider, + ) + setRedemptionStatus(result) + } + } + fetchData() + }, [account, poolName, provider, trancheType]) useEffect(() => { const fetchData = async () => { @@ -70,6 +89,19 @@ export function LendWithdrawV2({ fetchData() }, [account, poolName, provider, trancheType]) + useEffect(() => { + const fetchData = async () => { + if (account && provider) { + const poolContract = await getPoolContractV2(poolName, provider) + if (poolContract) { + const poolIsClosed = await poolContract.isPoolClosed() + setPoolIsClosed(poolIsClosed) + } + } + } + fetchData() + }, [account, poolName, provider]) + useEffect(() => { if (!step) { dispatch(setStep(WIDGET_STEP.ConfirmTransfer)) @@ -85,7 +117,12 @@ export function LendWithdrawV2({ [handleSuccess], ) - if (!poolInfo || !poolUnderlyingToken || !redemptionStatus) { + if ( + !poolInfo || + !poolUnderlyingToken || + !redemptionStatus || + poolIsClosed === undefined + ) { return ( )} {step === WIDGET_STEP.Transfer && ( - + )} {step === WIDGET_STEP.Done && (