diff --git a/package.json b/package.json index efd96994326..39745df6bcd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rubic-sdk", - "version": "5.32.6", + "version": "5.32.7", "description": "Simplify dApp creation", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/src/features/cross-chain/calculation-manager/providers/bridgers-provider/bridgers-cross-chain-provider.ts b/src/features/cross-chain/calculation-manager/providers/bridgers-provider/bridgers-cross-chain-provider.ts index e742fb6f237..2f5e7383b65 100644 --- a/src/features/cross-chain/calculation-manager/providers/bridgers-provider/bridgers-cross-chain-provider.ts +++ b/src/features/cross-chain/calculation-manager/providers/bridgers-provider/bridgers-cross-chain-provider.ts @@ -40,6 +40,8 @@ import { RubicStep } from 'src/features/cross-chain/calculation-manager/provider import { tronCommonCrossChainAbi } from 'src/features/cross-chain/calculation-manager/providers/common/tron-cross-chain-trade/constants/tron-common-cross-chain-abi'; import { AbiItem } from 'web3-utils'; +import { CrossChainTrade } from '../common/cross-chain-trade'; + export class BridgersCrossChainProvider extends CrossChainProvider { public readonly type = CROSS_CHAIN_TRADE_TYPE.BRIDGERS; @@ -167,37 +169,36 @@ export class BridgersCrossChainProvider extends CrossChainProvider { ) : null; - return { - trade: new EvmBridgersCrossChainTrade( - { - from: from as PriceTokenAmount, - to: to as PriceTokenAmount, - toTokenAmountMin, - feeInfo, - gasData, - slippage: options.slippageTolerance - }, - options.providerAddress, - await this.getRoutePath(from, to) - ), - tradeType: this.type - }; - } - return { - trade: new TronBridgersCrossChainTrade( + const evmTrade = new EvmBridgersCrossChainTrade( { - from: from as PriceTokenAmount, - to: to as PriceTokenAmount, + from: from as PriceTokenAmount, + to: to as PriceTokenAmount, toTokenAmountMin, feeInfo, - slippage: options.slippageTolerance, - contractAddress: transactionData.contractAddress + gasData, + slippage: options.slippageTolerance }, options.providerAddress, await this.getRoutePath(from, to) - ), - tradeType: this.type - }; + ); + + return this.getCalculationResponse(from, transactionData, evmTrade); + } + + const tronTrade = new TronBridgersCrossChainTrade( + { + from: from as PriceTokenAmount, + to: to as PriceTokenAmount, + toTokenAmountMin, + feeInfo, + slippage: options.slippageTolerance, + contractAddress: transactionData.contractAddress + }, + options.providerAddress, + await this.getRoutePath(from, to) + ); + + return this.getCalculationResponse(from, transactionData, tronTrade); } catch (err: unknown) { return { trade: null, @@ -207,6 +208,32 @@ export class BridgersCrossChainProvider extends CrossChainProvider { } } + private getCalculationResponse( + from: PriceTokenAmount, + transactionData: BridgersQuoteResponse['data']['txData'], + trade: CrossChainTrade + ): CalculationResult { + if (from.tokenAmount.lt(transactionData.depositMin)) { + return { + trade, + error: new MinAmountError(new BigNumber(transactionData.depositMin), from.symbol), + tradeType: this.type + }; + } + if (from.tokenAmount.gt(transactionData.depositMax)) { + return { + trade, + error: new MaxAmountError(new BigNumber(transactionData.depositMax), from.symbol), + tradeType: this.type + }; + } + + return { + trade, + tradeType: this.type + }; + } + protected override async getFeeInfo( fromBlockchain: BridgersCrossChainSupportedBlockchain, _providerAddress: string,