UNPKG

@sovryn-zero/lib-ethers

Version:
297 lines (261 loc) 11.1 kB
import { CollateralGainTransferDetails, Decimalish, LiquidationDetails, RedemptionDetails, SendableLiquity, StabilityDepositChangeDetails, StabilityPoolGainsWithdrawalDetails, TroveAdjustmentDetails, TroveAdjustmentParams, TroveClosureDetails, TroveCreationDetails, TroveCreationParams } from "@sovryn-zero/lib-base"; import { EthersTransactionOverrides, EthersTransactionReceipt, EthersTransactionResponse, PermitParams } from "./types"; import { PopulatableEthersLiquity, PopulatedEthersLiquityTransaction, SentEthersLiquityTransaction } from "./PopulatableEthersLiquity"; const sendTransaction = <T>(tx: PopulatedEthersLiquityTransaction<T>) => tx.send(); /** * Ethers-based implementation of {@link @sovryn-zero/lib-base#SendableLiquity}. * * @public */ export class SendableEthersLiquity implements SendableLiquity<EthersTransactionReceipt, EthersTransactionResponse> { private _populate: PopulatableEthersLiquity; constructor(populatable: PopulatableEthersLiquity) { this._populate = populatable; } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.openTrove} */ openTrove( params: TroveCreationParams<Decimalish>, maxBorrowingRate?: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<TroveCreationDetails>> { return this._populate.openTrove(params, maxBorrowingRate, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.openNueTrove} */ openNueTrove( params: TroveCreationParams<Decimalish>, maxBorrowingRate?: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<TroveCreationDetails>> { return this._populate.openNueTrove(params, maxBorrowingRate, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.closeTrove} */ closeTrove( overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<TroveClosureDetails>> { return this._populate.closeTrove(overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.closeNueTrove} */ closeNueTrove( permitParams: PermitParams, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<TroveClosureDetails>> { return this._populate.closeNueTrove(permitParams, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.adjustTrove} */ adjustTrove( params: TroveAdjustmentParams<Decimalish>, maxBorrowingRate?: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<TroveAdjustmentDetails>> { return this._populate.adjustTrove(params, maxBorrowingRate, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.repayZusdFromDLLR} */ repayZusdFromDLLR( zusdAmount: Decimalish, permitParams: PermitParams, maxBorrowingRate?: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<TroveAdjustmentDetails>> { return this._populate.adjustNueTrove({ repayZUSD: zusdAmount, }, permitParams, maxBorrowingRate, overrides).then(sendTransaction); } withdrawZusdAndConvertToDLLR( zusdAmount: Decimalish, maxBorrowingRate?: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<void>> { return this._populate.withdrawZusdAndConvertToDLLR(zusdAmount, maxBorrowingRate, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.adjustNueTrove} */ adjustNueTrove( params: TroveAdjustmentParams<Decimalish>, permitParams: PermitParams, maxBorrowingRate?: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<TroveAdjustmentDetails>> { return this._populate.adjustNueTrove(params, permitParams, maxBorrowingRate, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.depositCollateral} */ depositCollateral( amount: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<TroveAdjustmentDetails>> { return this._populate.depositCollateral(amount, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.withdrawCollateral} */ withdrawCollateral( amount: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<TroveAdjustmentDetails>> { return this._populate.withdrawCollateral(amount, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.borrowZUSD} */ borrowZUSD( amount: Decimalish, maxBorrowingRate?: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<TroveAdjustmentDetails>> { return this._populate.borrowZUSD(amount, maxBorrowingRate, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.repayZUSD} */ repayZUSD( amount: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<TroveAdjustmentDetails>> { return this._populate.repayZUSD(amount, overrides).then(sendTransaction); } /** @internal */ setPrice( price: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<void>> { return this._populate.setPrice(price, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.liquidate} */ liquidate( address: string | string[], overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<LiquidationDetails>> { return this._populate.liquidate(address, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.liquidateUpTo} */ liquidateUpTo( maximumNumberOfTrovesToLiquidate: number, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<LiquidationDetails>> { return this._populate .liquidateUpTo(maximumNumberOfTrovesToLiquidate, overrides) .then(sendTransaction); } redeemCollateralViaDLLR( dllrAmount: Decimalish, permitParams: PermitParams, maxRedemptionRate?: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<RedemptionDetails>> { return this._populate.redeemCollateralViaDLLR(dllrAmount, permitParams, maxRedemptionRate, overrides).then(sendTransaction); } provideToSpFromDLLR( dllrAmount: Decimalish, permitParams: PermitParams, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<void>> { return this._populate.provideToSpFromDLLR(dllrAmount, permitParams, overrides).then(sendTransaction); } withdrawFromSpAndConvertToDLLR( zusdAmountRequested: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<void>> { return this._populate.withdrawFromSpAndConvertToDLLR(zusdAmountRequested, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.depositZUSDInStabilityPool} */ depositZUSDInStabilityPool( amount: Decimalish, frontendTag?: string, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<StabilityDepositChangeDetails>> { return this._populate .depositZUSDInStabilityPool(amount, frontendTag, overrides) .then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.withdrawZUSDFromStabilityPool} */ withdrawZUSDFromStabilityPool( amount: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<StabilityDepositChangeDetails>> { return this._populate.withdrawZUSDFromStabilityPool(amount, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.withdrawGainsFromStabilityPool} */ withdrawGainsFromStabilityPool( overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<StabilityPoolGainsWithdrawalDetails>> { return this._populate.withdrawGainsFromStabilityPool(overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.transferCollateralGainToTrove} */ transferCollateralGainToTrove( overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<CollateralGainTransferDetails>> { return this._populate.transferCollateralGainToTrove(overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.sendZUSD} */ sendZUSD( toAddress: string, amount: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<void>> { return this._populate.sendZUSD(toAddress, amount, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.sendZERO} */ sendZERO( toAddress: string, amount: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<void>> { return this._populate.sendZERO(toAddress, amount, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.redeemZUSD} */ redeemZUSD( amount: Decimalish, maxRedemptionRate?: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<RedemptionDetails>> { return this._populate.redeemZUSD(amount, maxRedemptionRate, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.claimCollateralSurplus} */ claimCollateralSurplus( overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<void>> { return this._populate.claimCollateralSurplus(overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.stakeZERO} */ stakeZERO( amount: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<void>> { return this._populate.stakeZERO(amount, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.unstakeZERO} */ unstakeZERO( amount: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<void>> { return this._populate.unstakeZERO(amount, overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.withdrawGainsFromStaking} */ withdrawGainsFromStaking( overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<void>> { return this._populate.withdrawGainsFromStaking(overrides).then(sendTransaction); } /** {@inheritDoc @sovryn-zero/lib-base#SendableLiquity.registerFrontend} */ registerFrontend( kickbackRate: Decimalish, overrides?: EthersTransactionOverrides ): Promise<SentEthersLiquityTransaction<void>> { return this._populate.registerFrontend(kickbackRate, overrides).then(sendTransaction); } }